17

皆さん、

Ant と端末で Javac Cross コンパイルを少し試してみました。ローカルおよび統合環境で、非常に基本的な問題で同じ問題が発生しています。

これをLinuxターミナルで実行します(また、Windowsのcygwinとcmdでも):

 javac -target 1.6 -source 1.7 -bootclasspath /usr/java/jdk1.6.0_27/jre/lib/rt.jar Main.java

System.out.println 以外の何もない Main.java を使用します。

javac -version ==> javac 1.7.0_11

エラーメッセージが表示されます:

javac: source release 1.7 requires target release 1.7

ローカルの Windows マシンでもほぼ同じ構成で、まったく同じ結果が得られます。

クロスコンパイルとは、その上位バージョンのjdkを使用して上位バージョンのjdkと互換性のあるソースコードをコンパイルすることですが、おそらく下位のターゲットバージョンのrt.jarを渡すことです。

ターゲットとソースが同じであれば、うまくいきました。

target=1.7 and source=1.7 workd fine

target=1.6 and source=1.6 worked just fine

しかし、クロスコンパイルが必要なので、間違っているのは何ですか?

私が得ることができるすべての助けに感謝し、前もって感謝します。

4

2 に答える 2

2

これは javac の制限です。古いバージョンのjavacでは、「-target」(-sourceではなく)を指定するだけで済むことに注意してください。あなたはまだできるかもしれません。

スタンドアロン コンパイラとして、maven プラグインとして利用でき、ant スクリプトの javac タスクでも使用できる Eclipse Java コンパイラ (ecj) の使用を検討することをお勧めします。

詳細については、 http://help.eclipse.org/indigo/topic/org.eclipse.jdt.doc.user/tasks/task-using_batch_compiler.htmを参照してください。

于 2013-11-19T14:20:26.320 に答える