お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2009-04-30 19:47:30

karateMan
メンバ
登録日: 2009-04-30

Javaのコンパイルエラー

環境:ubuntu8.04 + emacs23 snapshot + JDE 2.3.5.1

Javaに関しては初心者ですが、Fortranや C++などを経験しています。目的は数値計算を通してJavaを学ぶことです。
まず環境を整えようと、コードはウェブからコピペし(自分のコードミスでは環境の成否を判断し難い)、コンパイルしたのですが、
"The JDE does not recognize JDK 63 javac.  Assume JDE 1.7 javac?"
と出て、OKを押すと、
"jde-get-tools-jar: Cannot find JDK's tools jar file (or equivalent)."
とでます。
どうやら環境に問題があるようですが、解決ほうがいまいち理解できないので、分かる方はいらっしゃいますか?

一応コードを添付します。
----------------------------------------------------------------
import java.io.*;

public class Nibun {
    public static void main(String args[]) {
    int n;
    double a, b, c, x, fa, fb, fc, eps;

    // 初期値
    a=1.0; b=Math.E; c=0.0; x=0.0; fa=0.0; fb=0.0; fc=0.0; eps=1.0;

    // 二分法
    while(eps>1.0E-5) {
        c = (a + b) / 2;
        
        Nibun fx = new Nibun();
        fa = fx.calc(a);
        fb = fx.calc(b);
        fc = fx.calc(c);
        
        if(fa*fc<0) {
        b = c;
        fb = fc;
        }
        else if(fb*fc<0) {
        a = c;
        fa = fc;
        }
        else {
        System.out.println("おかしいよ。");
        break;
        }
        
        eps = Math.abs(b-a);
    }
    System.out.println(c);
    System.out.println(1.76*Math.log(1.76)-1.0);
    }
   
    // x*log(x)-1=0 の計算
    double calc(double x) {
        double f = 0.0;
        f = x * Math.log(x) - 1.0;
        return f;
    }
}

オフライン

 

#2 2009-04-30 20:19:39

Cametan
メンバ
登録日: 2007-08-12

Re: Javaのコンパイルエラー

どうも込み入ってますね。
そもそもJDEE自体が設定メンド臭いし(笑)。困ったもんです。

一応、こちらの環境(Ubuntu8.10、Emacs 22)で試してみると、上手くコンパイル出来たんで、コード的には問題が無い模様です。
従って、Emacs+JDEEの設定の問題でしょうねえ・・・・・・。こりゃあ困った(苦笑)。

そもそも、僕はJavaをまったく知りませんし、JDEEも「キーバインドがどうしてこんなにややこしいんだ!!!」って怒っているクチなんで(笑)、あんま役に立つ事言えそうにねえなあ(苦笑)。

取り合えず、次のページを参考にしてください。
僕の.emacsのJDEEの設定に関しては、別のページで書いておきます。

JDEE:Java Development Environment for Emacs:
http://www.02.246.ne.jp/~torutk/jdee/jdee.html

オフライン

 

#3 2009-04-30 20:24:34

karateMan
メンバ
登録日: 2009-04-30

Re: Javaのコンパイルエラー

ご返事ありがとうございます。
実はこのページを参考に設定を行いました。で、この結果です(涙)

Emacsのキーバインドに一旦なれると、それ以外はもう遅くてイライラしてしまいます(笑)

オフライン

 

#4 2009-04-30 20:38:38

Cametan
メンバ
登録日: 2007-08-12

Re: Javaのコンパイルエラー

実はこのページを参考に設定を行いました。で、この結果です(涙)

なるほど、そうでしたか。

Emacsのキーバインドに一旦なれると、それ以外はもう遅くてイライラしてしまいます(笑)

まあ、そうですけどね(笑)。
ただ、C言語のコンパイルのC-c cやCommon Lisp(SLIME)のC-c C-kなんかに比べても「無駄に込み入ってる」って感じです(笑)。

ええと、そうなると怪しいのは、コンパイラ設定でしょう。
件のページの

JDEEの設定:コンパイル設定:
http://www.02.246.ne.jp/~torutk/jdee/jdee.html

に従うとしたら、

1.M-x customize-variable RET jde-compiler RETとする。
2.JDE Compilerの項目で[Show Value]を押し、Compiler typeでjavacを選ぶ。
3.PATHは

/usr/bin/javac

と設定する。
4.[Save for Future Sessions]ボタンを押して、それからEmacsを再起動する。

です。これで上手く行く筈、です。

ただ、環境的に「Emacs 23」を使っている、と言う話で、またEmacs 23は見た目綺麗なんですが、いまだ「開発版」ですよね?安定版じゃないわけです。
従って、これらの事を検証するのなら(まあ、実験してみても良いでしょうけど)、基本、安定版の22を使った方が良い、って事だけは書いておきます。
(と言うのも、スクリプト言語であるelispがヴァージョンによって動作が変わる、のです。今でも、21で作られたファイルが22で動かなかったり、と言うような事がままあって、elispに関して言うと、「互換性/後方互換性」はかなり怪しい、と思っています。)

オフライン

 

#5 2009-05-01 01:24:11

STGSAGWAN
ゲスト

Re: Javaのコンパイルエラー

karateMan さん

JDKじゃなくて誤ってJREだけをインストールしてませんか?

 

#6 2009-05-01 12:03:17

karateMan
メンバ
登録日: 2009-04-30

Re: Javaのコンパイルエラー

Cametanさん、STGSAGWANさん、ありがとうございました。
JDKがインストールされておらず、環境が設定されていませんでした(変えてはいたんですが、保存されていなかった!)
JREとJDKの違いも理解していないなんて、ほんと初心者ですね(汗)
キーバインドの方は未だ解決されずですが。

オフライン

 

#7 2009-05-01 13:47:16

STGSAGWAN
ゲスト

Re: Javaのコンパイルエラー

karateMan さん

karateMan による投稿:

JDKがインストールされておらず、環境が設定されていませんでした(変えてはいたんですが、保存されていなかった!)
JREとJDKの違いも理解していないなんて、

JREとJDKの違いは割愛しますが、つまりJDKをインストールしたら、正常にコンパイルできるようになった、ということですね?

実際に私の8.04の環境で、jde、emacs22をリポジトリからインストールし、SunのJREとJDK(sun-java6-jdk, sun-java6-jre)を交互にインストールして、JDEからコンパイルできるか否かを実験してみました。(事前に結果は明白ですが、どういうメッセージがでるかの実験です。)
なお、ソースビルドは大変なので、私はリポジトリからインストールしました。

結果は、JREを入れた時だけに
"jde-get-tools-jar: Cannot find JDK's tools jar file (or equivalent)."
というメッセージが出ました。

なぜかというと、JREには ${JAVA_HOME}/lib/tools.jarが同梱されていないので、JDEはtools.jarを見つけることができないのです。
tools.jarの役割については、別途調べてみるとよいと思います。


もう1点、コンパイルとは直接関係ないですが、
"The JDE does not recognize JDK 63 javac.  Assume JDE 1.7 javac?"
というメッセージが表示される件についてですが、
Jde Jdk Registry の Versionの初期設定がなぜか 63 になっているので、それを $javac -version で出力されるバージョン番号(例:1.6.0_07)などにすれば出なくなります。
でたらめな値(例: 1.3) とかでも通ってしまいますが、ここは$javac -versionの値に合わせておくのが管理上よいでしょう。


まとめると、JDEのGeneralの設定が以下ののようになってればOKです。
Jde Compiler の javac server は javac server (*1)
Jde Jdk Registry の Version は 1.6.0_07   (例)
Jde Jdk Registry の Path は /usr/lib/jvm/java-6-sun  (例)
Jde Jdk は上記「Jde Jdk Registry の Version」のいずれかの値

(*1) javacは毎回の起動が遅い上、Jde CompilerのPath と Jde Jdk Registry と Jde Jdkの3値を正しく管理していかなければならないので、ここはデフォルトのjavac serverを使ったほうが良いと、私は思います。

 

#8 2009-05-01 16:10:38

karateMan
メンバ
登録日: 2009-04-30

Re: Javaのコンパイルエラー

STGSAGWANさん、そうです。JDKをインストールするとコンパイルできました。
そしておっしゃるとおり、メッセージ
"The JDE does not recognize JDK 63 javac.  Assume JDE 1.7 javac?"
は未だに出てきます。
説明していただいたとおり設定してみました。すべてうまくいきました!
確かにjavac serverの方が数段早いですね。ありがとうございました。
これからJavaに取り組んでいこうと思います。

オフライン

 

Board footer

Powered by FluxBB