
Ubuntu日本語フォーラム
ログインしていません。
環境: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;
}
}
オフライン
どうも込み入ってますね。
そもそも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
オフライン
ご返事ありがとうございます。
実はこのページを参考に設定を行いました。で、この結果です(涙)
Emacsのキーバインドに一旦なれると、それ以外はもう遅くてイライラしてしまいます(笑)
オフライン
実はこのページを参考に設定を行いました。で、この結果です(涙)
なるほど、そうでしたか。
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に関して言うと、「互換性/後方互換性」はかなり怪しい、と思っています。)
オフライン
karateMan さん
JDKじゃなくて誤ってJREだけをインストールしてませんか?
Cametanさん、STGSAGWANさん、ありがとうございました。
JDKがインストールされておらず、環境が設定されていませんでした(変えてはいたんですが、保存されていなかった!)
JREとJDKの違いも理解していないなんて、ほんと初心者ですね(汗)
キーバインドの方は未だ解決されずですが。
オフライン
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を使ったほうが良いと、私は思います。
STGSAGWANさん、そうです。JDKをインストールするとコンパイルできました。
そしておっしゃるとおり、メッセージ
"The JDE does not recognize JDK 63 javac. Assume JDE 1.7 javac?"
は未だに出てきます。
説明していただいたとおり設定してみました。すべてうまくいきました!
確かにjavac serverの方が数段早いですね。ありがとうございました。
これからJavaに取り組んでいこうと思います。
オフライン