41

私の .java (いくつか) を、Java の.jar少なくとも新しいバージョンJava 1.6、できれば新しいバージョンと互換性のあるものにコンパイルしたいと考えてJava 1.5います。(私は持っていますJava 1.7.0_5)

4

6 に答える 6

28

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

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

于 2012-07-06T15:11:22.893 に答える
25

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

javac --release N ...

これはと同等です

javac -source N -target N –bootclasspath rtN.jar
于 2015-11-02T17:41:58.610 に答える
3

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

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

于 2012-07-06T15:05:51.127 に答える
1

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

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

于 2016-08-21T18:04:03.940 に答える
0

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

-ソース 1.5

于 2012-07-06T15:06:36.500 に答える