EclipseでコンパイルするとJ2SDKのコンパイラが使われない
開発環境はやはりEclipse。
バージョンは…個人的には3.x系列を使ってみたいのだが、公式のもので日本語版が無いので他の人には荷が重いだろう。
そもそもJavaを使用するのすら初めてのようであるし。
そういうわけで2.1.3を使うことになりそうだ。
ところで、Eclipseでのコンパイル時、コンパイラはJ2SDKのものを使っていない、という事実を初めて知った。
もちろん、Eclipseのバージョンが変わればEclipseコンパイラのバージョンが変わっている可能性がある。
リリース時にAntを使用することにすれば、J2SDKのコンパイラを使用できるようになるが、この場合実装時とリリースのものとでは、コンパイルしてい るコンパイラが異なることとなる。
このあたりはまだ検討する必要があり、今後どうするかは早めに決断しておかなければならない。
なお、Eclipseコンパイラのバージョンを調べるためには、
eclipse\plugins\org.eclipse.jdt.core_3.0.0 ディレクトリで
>java -classpath jdtcore.jar org.eclipse.jdt.internal.compiler.batch.Main -version
コマンドを実行すればわかる。
Eclipse3.0.0で、こ ちらの非公式日本語化パッチを適用するとコンパイラのバージョンが変わるようだ。
以下はにちゃんねるでの私(及び回答してくださった方)の発言。
重要そうなところは太字で示している。
EclipseってJDKのコンパイラ使っていないというのを
http://pc5.2ch.net/test/read.cgi/tech/1093267533/43-
を読んではじめて知りました。
ところで、
コンパイラのバージョン情報などを調べるにはどうすればよいのでしょう?
やはりEclipseのバージョンが変わるとコンパイラのバージョンも変わるのですか?
また、Antを使うにしても、コンソールから実行するのとEclipseから実行するのとでは
コンパイラが変わっている、ということになるのですね…
980 :979:04/08/29(日) 03:10 New!!
>>979の
> また、Antを使うにしても、コンソールから実行するのとEclipseから実行するのとでは
> コンパイラが変わっている、ということになるのですね…
は忘れてください。認識間違っていました。すみません。
981 :デフォルトの名無しさん:04/08/29(日) 08:51 New!!
>>979
自分で好きなのに切り替えられるでしょ。
982 :デフォルトの名無しさん:04/08/29(日) 11:52 New!!
>>978 コードフォーマッタ使えよ。
983 :デフォルトの名無しさん:04/08/29(日) 11:58 New!!
>>979 Eclipseに含まれるコンパイラは
http://dev.eclipse.org/viewcvs/index.cgi/%7Echeckout%7E/jdt-core-home/howto/batch%20compile/batchCompile.html
の手順に従うとコマンドラインから起動できる。
このとき-versionオプションを使うとバージョン情報等取得できる。
984 :979:04/08/29(日) 12:48 New!!
>>981
どうやれば切り替えられるのでしょう?
出来ればコーディング時も実際稼動するときと同じコンパイラでコンパイルできた方が
嬉しいのですが…
(今だとコーディング時->Eclipseのコンパイラ、実稼動時-> J2SDKのコンパイラ、
になってしまっているみたいなので。)
985 :デフォルトの名無しさん:04/08/29(日) 13:04 New!!
>>984
>(今だとコーディング時->Eclipseのコンパイラ、実稼動時->J2SDKのコンパイラ、
>になってしまっているみたいなので。)
979のとこで現在こういう流れになっているということは、979は実稼動直前に
javacでコンパイル作業を行っているわけだが、それどういうふうにやってるの?
もしantでやっているのなら、そのbuild.xmlをプロジェクトのビルダの
Java Builderと入れ替える。それでコーディング時もjavacでコンパイルされる。
986 :979:04/08/29(日) 13:31 New!!
>>983
2.1.3と3.0.0で試してみました。
2.1.3:
Eclipse Java Compiler 0.319_R21x, Copyright IBM Corp 2000-2003. All rights reserved.
3.0.0:
Eclipse Java Compiler 0.315_R21x, Copyright IBM Corp 2000, 2004. All rights reserved.
あれ?3.0.0の方がバージョン低い?
ともかく、やはりEclipseのバージョンによってコンパイラのバージョンも
変わってしまうのですね…
>>985
すみません、少し嘘ついてました。まだ実際にはEclipseで開発行っているわけではなく、
導入検討中の段階です。なので
> コーディング時->Eclipseのコンパイラ、実稼動時->J2SDKのコンパイラ、になってしまうのではないでしょうか?
が正しい表現でした。
で、実際の開発では、コーディング時はEclipseのメニューからコンパイルして デバッガで走らせて、
とするのではと考えており、なおかつ最終的にAntでビルドを行うとすると
実際にリリースするものとデバッグするものは別物ということになるの では、
と心配しているわけなのです。
Eclipseのメニューからビルドをしないようにして、全てAntで行うようにすれば
問題は解決するのでしょうか。
987 :デフォルトの名無しさん:04/08/29(日) 13:48 New!!
>>986 なんかあやしいなあ。R3.0系のコンパイラのバージョンは
v0.4xx。決してv0.3xxがでることはない。正しくは
$ java -cp jdtcore.jar org.eclipse.jdt.internal.compiler.batch.Main -version
Eclipse Java Compiler 0.449, Copyright IBM Corp 2000, 2004. All rights reserved.
つーか、
>3.0.0:
>Eclipse Java Compiler 0.315_R21x, Copyright IBM Corp 2000, 2004. All rights reserved.
これ、R21xのタグついてるってことはR2.1.xのメンテナンスブランチから
持ってきたjdtcoreってことなんだけど、やってること大丈夫?
で、心配事の本質が単に「コーディング時とリリース時に使われる
コンパイラが違うのが困る」というだけなら、
(1)コーディング時にSDK中のjavacを使う。
(2)リリース時にeclipse中のコンパイラをantから呼び出す。
の二通りの解決法が考えられるが、どちらも可能。
(1)の方法だとJavaエディタの支援機能の設定とjavacの設定が
ずれるとかなりはまるから、できれば(2)だろうね。
>Eclipseのメニューからビルドをしないようにして、全てAntで行う ようにすれば
>問題は解決するのでしょうか。
それでもいいけど、Eclipseのビルドプロセスは自分でカスタマイズできて
Eclipse中のコンパイラを走らせる代わりに任意のantスクリプトを
走らせることができる。こっちのほうがわずらわしくないかもね。
988 :デフォルトの名無しさん:04/08/29(日) 13:55 New!!
次ぎスレ建てまだー?
989 :979:04/08/29(日) 14:46 New!!
>>987
> >>986 なんかあやしいなあ。R3.0系のコンパイラのバージョンは
> v0.4xx。決してv0.3xxがでることはない。
こちらに関しては、もしかすると下のURLで紹介されていた非公式日本語パッチ
http://www.eclipsewiki.net/eclipse/?%C6%FC%CB%DC%B8%EC%B2%BD#content_1_0
を入れたからかもしれません。後で追試しておきます…
> (1)の方法だとJavaエディタの支援機能の設定とjavacの設定が
> ずれるとかなりはまるから、できれば(2)だろうね。
(2)ということは、一貫してEclipseコンパイラを使用しろ、ということですね。
色々と新しい知識を得られました。
もう少し検討してみます。ありがとうございました。
コメント
この記事へのコメントは終了しました。
ご存知かと思いますが・・・
JDKコンパイラの準拠レベルは
[設定]-[Java]-[コンパイラ]-[準拠およびクラスファイル]
で設定できます。
# Eclipse3.1では1.5が選択可能
私は Eclipse を使用して Web やスタンドアロンなど
様々なプロジェクトを経験してきましたが、コンパイラの
バージョンによる問題は発生していません。
また、コンパイラは Eclipse でもライブラリは JDK が
使用され、実行も JDK が使用されますよね。
結構、コンパイラとライブラリを混同されている方もいるので。
あと、私が作成した日本語パッチのバージョン情報ミス
すいませんでしたー。一応直しときました。
# Mergedoc by cypher256
投稿: ちょっと一言 | 2004/08/31 15:32
コメントありがとうございます。
> コンパイラのバージョンによる問題は発生していません。
とのことで、また確かにそういうことが原因で問題が発生したという話は
全く聞いたことが無いので、私も個人的には気にする必要は無いと考えているのですが…
というところです。
日本語化パッチの件、ありがとうございました。
使用させていただいております。
(ただ、仕事で使うのはどうやら2.1.3になりそうなのが残念です。)
投稿: 雪羽 | 2004/09/05 04:04