« 引越し決定 | トップページ | 引越し後 »

2004/08/29

EclipseでコンパイルするとJ2SDKのコンパイラが使われない

Javaを使って仕事を行うことになりそうだ。
開発環境はやはり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で、こ ちらの非公式日本語化パッチを適用するとコンパイラのバージョンが変わるようだ。

以下はにちゃんねるでの私(及び回答してくださった方)の発言。
重要そうなところは太字で示している。


979 :デフォルトの名無しさん:04/08/29(日) 03:08    New!!
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

コメントありがとうございます。

> コンパイラのバージョンによる問題は発生していません。
とのことで、また確かにそういうことが原因で問題が発生したという話は
全く聞いたことが無いので、私も個人的には気にする必要は無いと考えているのですが…
というところです。

日本語化パッチの件、ありがとうございました。
使用させていただいております。
(ただ、仕事で使うのはどうやら2.1.3になりそうなのが残念です。)

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/18902/1305741

この記事へのトラックバック一覧です: EclipseでコンパイルするとJ2SDKのコンパイラが使われない:

« 引越し決定 | トップページ | 引越し後 »

other sites

  • follow us in feedly
  • github
  • stackoverflow

ソフトウェアエンジニアとして影響を受けた書籍

  • Christain Bauer: HIBERNATE イン アクション

    Christain Bauer: HIBERNATE イン アクション
    理論と実践が双方とも素晴らしい製品であるHibernate。本書はそのプロダクトを書名に冠していますが、Hibernateを使うつもりがなく、ORマッピングの解説書として読むにしても十分な良書です。Second EditionとしてJava Persistence With Hibernateという書籍も出版されていますが、残念ながら現在のところ 和訳はされていません。-インアクションは2.xの、Java Persistence-は3.1の頃のものなので、最新版とはちょっと違うところもあることに注意。 (★★★★★)

  • アンドリュー・S・タネンバウム: 分散システム 原理とパラダイム 第2版

    アンドリュー・S・タネンバウム: 分散システム 原理とパラダイム 第2版
    クライアント/サーバシステムを構築する上で必要となる知識が総論されてます。Web技術者も、フレームワーク部分を開発するのであれば必読。 (★★★★★)

  • Joel Spolsky∥著: ジョエル・オン・ソフトウェア

    Joel Spolsky∥著: ジョエル・オン・ソフトウェア
    前述の書籍「ソフトウエア開発プロフェッショナル」をより砕いたもの、という感じでしょうか。 前書きではプログラマでなくSE向けの本のように書かれているが、プログラマが読んでも面白い本であると思われます。 SEになった新人(あるいはそういう会社に入る/入りたての人)にとっては、これからどういったことが仕事を遂行していく上で起こりえるのか、どのように考えて行なっていけばいいのか決定する助けになると思います。 元は″Joel on Software″というブログの記事で、web上でも一部日本語で読めます。 http://japanese.joelonsoftware.com/ (★★★)

  • ドナルド・C・ゴース,ジェラルド・M・ワインバーグ: ライト、ついてますか

    ドナルド・C・ゴース,ジェラルド・M・ワインバーグ: ライト、ついてますか
    問題解決(一昔前のの流行語で言うところの『ソリューション』)能力は、システムエンジニアのスキルとして備えるべきもののうちのひとつです。しかし、これは難しい。学校で出されるテストと違い、唯一の、(問題提出者が想定している)解を求めるだけが「問題解決」では無いからです。そもそも、何が問題なのか、それは本当に問題なのか、それは本当に解決すべき問題なのか、その問題解決方法は正しいのか、などを解決しなければ、「その解は正しいのか」に辿りつくことができません。この本の最も良いところのひとつは、本があまり厚くないこと。すぐに読めるし、何回も読み返す気になるでしょう。 (★★★★★)

  • スティーブ・マコネル: ソフトウエア開発プロフェッショナル

    スティーブ・マコネル: ソフトウエア開発プロフェッショナル
    コードコンプリートで有名なスティーブマコネルの著書。新人SEに読んで欲しい。個人として業界の中でどうあるべきか、組織としてどうあるべきか、SEのプロ意識とは?SEの心構え概論、といったところでしょうか。また、業界における資格の重要性についても説かれています。この業界では資格が特に軽んじられる傾向がありますが、この傾向はどんな弊害をもたらすのか、将来的にこの業界は資格に対してどのような姿勢で臨んでいくべきなのか。日経BP社では(他の出版社もだが)最近、似たような類いのあまり面白くない書籍が乱出版されていますが、この本は別格だと思うので安心して購入して欲しいと思います。 (★★★★★)

無料ブログはココログ