web-dev-qa-db-ja.com

古いバージョンのJavaをサポートする.Javaをコンパイルするにはどうすればよいですか?

Java(複数)を1つにコンパイルしたい.jar少なくともJava 1.6以降、できればJava 1.5およびJavaの新しいバージョン。 (私が持っています Java 1.7.0_5

30
Primm

はい、コンパイル時にコンパイラのバージョンを設定できます。そして、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

-受け入れられるソースコードのバージョンを指定します。

18
gtiwari333

JDK 9以降、javacはクロスコンパイルの新しいオプションをサポートします

javac --release N ...

これは

javac -source N -target N –bootclasspath rtN.jar
10
Joe Darcy

javac -target 1.5 <source files>を使用できます。

ビルドシステム、Eclipse、または他のIDEを使用してjarをビルドしている場合は、どれを指定してください。

3
cha0site

Build Java version(基本的にすべての答えはそう言った)よりも低いコンパイラのターゲットバージョンを指定できますが、そうすべきではありません:クラスも提供する場合にのみ機能するため、非常に厄介です実際のターゲットバージョン用のライブラリ。これを行う場合、この古いJavaバージョンを使用してコンパイルします。はるかにクリーンでセットアップが少ないものです。ForJava 9オプションは少し優れていますが、rt.jarには古いJDKが必要です。

できることは、IDEと開発サイクルで-target/-bootclasspathコンパイラを高速化し、警告を改善するためのコツですが、ITおよびリリースビルドはターゲットバージョンで行う必要があります。

1
eckes

最新バージョンのJDKを使用し、ソースレベルを1.5に設定できます。1.5以降に導入されたクラス/メソッドを使用しない限り、JVM 1.5以降のすべてのバージョンで問題ありません。

-ソース1.5

0
tofarr