EclipseのJavaコンパイラとSunJDKのJavaコンパイラは違う
という事実を今さらながら知りました。へー。
以前Java開発をやっていたときは、IBMのEclipse拡張版(?)を使っていたので、実は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でバイナリレベルで全てのクラスファイルが一致していることを確認できたので、まあ問題ないかと。
そういや昔、IBMのEclipseで開発して、SunJDKでコンパイルリリースってやって、痛い目みたよなあとか思い出した。。