Java(複数)を1つにコンパイルしたい.jar
少なくともJava 1.6
以降、できればJava 1.5
およびJavaの新しいバージョン。 (私が持っています Java 1.7.0_5
)
はい、コンパイル時にコンパイラのバージョンを設定できます。そして、JavaコードをJavaの古いバージョンにコンパイルします。
Oracleの記事から: http://docs.Oracle.com/javase/1.5.0/docs/tooldocs/windows/javac.html
クロスコンパイルの例
ここでは、javacを使用して、1.4 VMで実行されるコードをコンパイルします。
% javac -target 1.4 -bootclasspath jdk1.4.2/lib/classes.Zip \
-extdirs "" OldCode.Java
コードのバージョンを示すように設定するには、次のパラメーターも必要になる場合があります。
-source release
-受け入れられるソースコードのバージョンを指定します。
JDK 9以降、javacはクロスコンパイルの新しいオプションをサポートします
javac --release N ...
これは
javac -source N -target N –bootclasspath rtN.jar
javac -target 1.5 <source files>
を使用できます。
ビルドシステム、Eclipse、または他のIDEを使用してjarをビルドしている場合は、どれを指定してください。
Build Java version(基本的にすべての答えはそう言った)よりも低いコンパイラのターゲットバージョンを指定できますが、そうすべきではありません:クラスも提供する場合にのみ機能するため、非常に厄介です実際のターゲットバージョン用のライブラリ。これを行う場合、この古いJavaバージョンを使用してコンパイルします。はるかにクリーンでセットアップが少ないものです。ForJava 9オプションは少し優れていますが、rt.jarには古いJDKが必要です。
できることは、IDEと開発サイクルで-target
/-bootclasspath
コンパイラを高速化し、警告を改善するためのコツですが、ITおよびリリースビルドはターゲットバージョンで行う必要があります。
最新バージョンのJDKを使用し、ソースレベルを1.5に設定できます。1.5以降に導入されたクラス/メソッドを使用しない限り、JVM 1.5以降のすべてのバージョンで問題ありません。
-ソース1.5