3

Linux Mint システムで Sun Java JDK 1.7.0_17 を使用して Java コードをコンパイルしようとしていますが、この問題が発生しています。

$ javac  -version -target 1.7 
javac 1.7.0_17
javac: invalid target release: 1.7

-target 1.6 も機能しません。Target 1.5 は動作しますが、バージョンの問題が発生します。

$ javac  -version -target 1.5 HelloWorld.java 
javac 1.7.0_17
HelloWorld.java:2: cannot access java.lang.Object
bad class file: /usr/lib/jvm/jdk1.7.0_17/jre/lib/rt.jar(java/lang/Object.class)
class file has wrong version 51.0, should be 49.0
Please remove or make sure it appears in the correct subdirectory of the classpath.
class HelloWorldApp {
^
1 error

Sun Java ディレクトリの外に利用可能な Java ターゲットのリストはありますか?

ClassPath または Javahome を指定していません。それらを設定しても役に立ちません。jcontrol は役に立ちません。1.7.0_15 でも試してみましたが、同様の結果が得られました。

4

4 に答える 4

0

更新: Mint を再インストールしたところ、問題は解消されました。私の好みのオプションではありません。

システム間の違いをまだ比較していません。

1.7 コンパイラが 1.7 コードをビルドしない理由を誰か思いつきますか?

于 2013-03-15T06:40:51.840 に答える
0

ファイルを問題なくコンパイルできました。ファイルのディレクトリに CD で移動し、実行しました

javac -version -target 1.7 App.java 

(App.java はファイル名です)。

javac -version を実行できましたが、次のように返されました。

javac 1.7.0_17

明らかに、私が使用している Java のバージョンを認識しています。

私があなたがしたことを実行すると:

javac -version -target 1.7

javac -version のみを実行した場合とまったく同じメッセージが表示されます。

javac 1.7.0_17

したがって、 -version と -target 1.7 を実行すると、 -target 1.7 が無視されるようです。

JAVA_HOME が指定されています。

とにかく -target 1.7 を指定する必要があるのはなぜですか? 1.7 を使用している場合は、これがデフォルトのはずです。

最初のソース コードの投稿で、「javac HelloWorld.java」と言うつもりでしたか? それはあなたが実行したいと思うコマンドであるべきだからです。「javac -version -target 1.7」ではありません。

于 2013-03-13T05:21:08.733 に答える
0

診断:

「mvn --version」を実行すると、Maven が使用する Java バージョンを確認できます。

Debian のソリューション:

mvn スクリプトは、javac ( ) を検索して、JAVA_HOME 環境変数を内部的に設定しますwhich javac。したがって、複数の Java バージョン (JDK 6 と JDK 7 など) が同時にインストールされていて、Debian Alternatives システムを使用してそれらから選択する場合、"java" の代替を JDK 7 に変更したとしても、mvn は引き続き JDK 6 を使用します。 「javac」の代替も変更する必要があります。例えば:

# update-alternatives --set javac /usr/lib/jvm/java-7-openjdk-amd64/bin/javac
于 2014-05-28T22:10:41.453 に答える