ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

EclipseのJavaコンパイラとSunJDKのJavaコンパイラは違う

という事実を今さらながら知りました。へー。


以前Java開発をやっていたときは、IBMEclipse拡張版(?)を使っていたので、実はEclipseを仕事で使うのは初めてだったりします。
Tomcatプラグインとか便利だねと。


で、今回リリース作業をやらせてもらった中で、リリースするJarファイルはEclipseで作るとかいうのがあって、いちいち画面でエクスポートするのも面倒だし、Eclipseで作業すること自体、なんか手違いが発生しそうだったので、せめてAntにしようとということで調べてました。


が、普通にAntのjavacタスクを使うと、SunJDKのJavaコンパイラを使うわけですが、そうすると表題の問題にブチあたります。つまり、開発、テストしたコードと、リリースするコードが変わってきてしまうわけです。
まあ、全部再テストするのであれば問題ないのでしょうけど、現実的ではありません。


で、どこかにも書いてあったけど、道は二つあって、

のどちらかなわけです。


で、現在Eclipseコンパイルされているものがリリースされているので、後者を選びました。
http://dev.eclipse.org/viewcvs/index.cgi/jdt-core-home/howto/batch%20compile/batchCompile.html?view=co
とか、
http://blog.livedoor.jp/nagasawa774/archives/51196733.html
の辺りを参考にさせてもらって、無事できました。
Eclipseで作ったJarファイルとAntで作ったJarファイルに対して、WinMergeバイナリレベルで全てのクラスファイルが一致していることを確認できたので、まあ問題ないかと。


そういや昔、IBMEclipseで開発して、SunJDKでコンパイルリリースってやって、痛い目みたよなあとか思い出した。。