25

1.6 インストーラーがあります。私はそれを使用しました。Java のインストールは変更されず、古いバージョンがあるとも言われませんが、インストールは完了します。

私はシンボリックリンクを少し扱っ​​てきましたが、何をしても、実行しています

java -version

ターミナルでは常に

Daves-MacBook-Pro:core-server dave$ java -version
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)

私のアプリケーションは、Java 1.7 をまったく使用しない GAE で動作します。そのため、1.7 を使用してコードをコンパイルできません! 1.6 を使用する必要がありますが、1.7 を削除する方法や、1.6 で強制的にビルド/コンパイルする方法を見つけることができませんでした。

最後に、コマンド ラインでビルド ツールを実行しているため、Eclipse でプロジェクトの設定を変更しても効果がないようです。

4

3 に答える 3

69

、などのコマンド ライン ツールは環境変数の値に敏感で、javaこの変数が 1.6 JDK を指している場合は 1.6 を使用します。ツールはここであなたの友達です。ランニングjavacJAVA_HOME/usr/libexec/java_home

/usr/libexec/java_home

JAVA_HOMEシステム上の最新の JDKの適切な値が出力されます。これはJava 7になりますが、フラグを使用して制約を適用できます。-vたとえば、

/usr/libexec/java_home -v '1.6*'

JAVA_HOMEシステムで利用可能な最適な1.6 JDKの値を返します。この値を使用して次を設定できますJAVA_HOME

export JAVA_HOME=`/usr/libexec/java_home -v '1.6*'`

特定のターミナル セッションに対して 1 回限り、または.bash_profileホーム ディレクトリ内のファイルに上記の行を追加することにより、将来のすべてのターミナル セッションに対して永続的に使用できます。


$ export JAVA_HOME=`/usr/libexec/java_home -v '1.6*'`
$ java -version
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)
$ export JAVA_HOME=`/usr/libexec/java_home -v '1.7*'`

$ java -version
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)
于 2012-11-27T23:27:58.460 に答える
1

以前のバージョンの Java で実行するコードを記述する必要がある場合は、コンパイル フラグを変更できます。必要なのはこれだけかもしれません。

例えば。

javac -source 1.6 -target 1.6 MyClass.java

source 引数は、ソースがそのバージョンの Java で記述されていることをList<String> strings = new ArrayList<>();示しているため、コンパイル エラーになります。Target は、指定されたバージョンの JVM を対象としたバイト コードをコンパイルするようにコンパイラに指示します。1.7 は 1.5 および 1.6 と完全に下位互換性があると思いますが。

于 2012-11-28T14:55:19.033 に答える
0

同様の問題に遭遇しました。JDK7 をインストールした後、一部のアプリケーションが動作しなくなりました。JDK6 に戻す必要がありましたが、別の方法で行いました。/System/Library/Frameworks/JavaVM.framework/Versions/ に次のように表示されていることに気付きました。

lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.4 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.4.2 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.5 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.5.0 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.6 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 Oct 25 17:01 1.6.0 -> CurrentJDK
drwxr-xr-x  8 root  wheel  272 Oct 25 18:06 A
lrwxr-xr-x  1 root  wheel    1 Oct 25 17:01 Current -> A
lrwxr-xr-x  1 root  wheel   59 Nov 20 21:40 CurrentJDK -> /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/

だから私はシンボリックリンクCurrentJDKを削除しました

 sudo rm CurrentJDK

そして、まだ私のMacにあるJDK6を指すシンボリックリンクを再作成しました

sudo ln -s  /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/ CurrentJDK

そしてそれは私のためにトリックをしました

java -version
   java version "1.6.0_65"
   Java(TM) SE Runtime Environment (build 1.6.0_65-b14-462-11M4609)
   Java HotSpot(TM) 64-Bit Server VM (build 20.65-b04-462, mixed mode)
于 2013-11-21T20:46:14.720 に答える