JDK 1.6 を使用してコンパイルしたときに JRE 1.5 で実行する Java コードをビルドするオプションはありますか?
PS:私はJavaが初めてです。
コードを 1.6 でコンパイルすると、1.5 では実行されません。1.5 で実行する場合は、1.5 でコードをコンパイルすると、両方で実行できます。
1.5 でコンパイルしてみて、エラーがあれば投稿してください。1.5 でコンパイルされない唯一の方法は、コードで特定の 1.6 拡張機能を使用する場合です。
本当の質問に答えるために。
javac -target 1.5
詳しくはこちらをご覧ください。
はい、できます。http://java.sun.com/javase/6/docs/technotes/tools/windows/javac.htmlを参照して、「クロスコンパイル オプション」セクションを探してください。つまり、javac に -target=1.5 を指定する必要があります。もちろん、Ant もこのフラグをサポートしています。
javac の「-source」および「-target」オプションを見てください。
http://java.sun.com/javase/6/docs/technotes/tools/windows/javac.html
・ソースリリース
受け入れられるソース コードのバージョンを指定します。release には次の値を使用できます。
- 1.3 コンパイラは、JDK 1.3 以降に導入されたアサーション、ジェネリック、またはその他の言語機能をサポートしていません。
- 1.4 コンパイラは、JDK 1.4 で導入されたアサーションを含むコードを受け入れます。
- 1.5 コンパイラは、JDK 5 で導入されたジェネリックおよびその他の言語機能を含むコードを受け入れます。
- 5 1.5 の同義語。
- 1.6 これがデフォルト値です。Java SE 6 では言語の変更は導入されていません。ただし、ソース ファイルのエンコーディング エラーは、以前のように警告ではなくエラーとして報告されるようになりました。
- 6 1.6 の同義語。
+
-対象バージョン
指定したバージョンの VM を対象とするクラス ファイルを生成します。クラス ファイルは、指定されたターゲットとそれ以降のバージョンで実行されますが、以前のバージョンの VM では実行されません。有効なターゲットは、1.1 1.2 1.3 1.4 1.5 (5 も) および 1.6 (6 も) です。
-target のデフォルトは、-source の値によって異なります。 - -source が指定されていない場合、-target の値は 1.6 です。
- -source が 1.2 の場合、-target の値は 1.4 です。
- -source が 1.3 の場合、-target の値は 1.4 です。
- -source の他のすべての値の場合、-target の値は -source の値です。
それはすべて、使用している API によって異なります。Swing、Instrumentation、JConsole などは時間とともに変化します。
試してみると:
http://www.coderanch.com/t/382318/Java-General/java/New-Features-Java
最新の各メジャー バージョンの違いを示すページへのリンクがあります。
http://java.sun.com/javase/6/webnotes/features.html
最新バージョンの変更/新機能のリストです。
うまくいけば、それはあなたにいくつかのアイデアを与えるでしょう.
そしてもちろん、その JRE で実行するには、1.5 でコンパイルする必要があります。