私の .java (いくつか) を、Java の.jar
少なくとも新しいバージョンJava 1.6
、できれば新しいバージョンと互換性のあるものにコンパイルしたいと考えてJava 1.5
います。(私は持っていますJava 1.7.0_5
)
6 に答える
はい、コンパイル時にコンパイラのバージョンを設定できます。そして、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 をビルドしている場合は、どれを指定してください。
ビルドJavaバージョンよりも低いコンパイラのターゲットバージョンを指定できます(すべての回答は基本的にそう言っています)が、そうすべきではありません:実際のターゲットバージョンのクラスライブラリも提供する場合にのみ機能するため、非常に面倒です。そうするなら、単にこの古い Java バージョンを使用してコンパイルする方がはるかに優れています。はるかにクリーンで、セットアップするものが少なくなります。Java 9 の場合、オプションは少し改善されていますが、rt.jar 用に古い JDK が必要です。
できることは、IDE および開発サイクルで-target
/-bootclasspath
トリックを使用してコンパイラを高速化し、警告を改善することですが、IT およびリリース ビルドはターゲット バージョンで行う必要があります。
JDK の最新バージョンを使用して、ソース レベルを 1.5 に設定できます。1.5 以降に導入されたクラス/メソッドを使用しない限り、JVM 1.5 以降のすべてのバージョンで問題ありません。
-ソース 1.5