OS XおよびJAVA_HOMEロケーションでの複数のJavaバージョンのサポート


12

OS Xで複数のバージョンのJavaを使用することは可能ですが、その動作を理解するのは難しいと思います。

私はMountain Lionにアップグレードしましたが、今echo $JAVA_HOMEは空です。

ただし /System/Library/Frameworks/JavaVM.framework/Versions/

1.4     1.5     1.6     A       CurrentJDK
1.4.2   1.5.0   1.6.0   Current

1.4.2に移行して実行するjava - versionか、./java -version

Java(TM)SEランタイム環境(ビルド1.6.0 _33-b03-424-11M3720)

それでは、同じバージョンのJavaがあるのに、なぜこれらすべてのバージョンが使用されるのでしょうか?

次に、OracleからJDK 7をダウンロードしてインストールしました。

通常、新しいJDKはどこにインストールされますか?

最後の質問:すべてのアプリケーションでデフォルトで実行するバージョンを選択するにはどうすればよいですか?

勝ちます。 Path:location to に設定JAVA_HOMEしたので、それだけです。C:/ProgramFiles/Java/.…JAVA_HOME/bin


1
Oracleは最近、JREという用語を使用してJavaアプレットプラグインのみを説明しているため、興味深いかもしれません(紛らわしい!)。また、OS Xのユーザーは2つの異なるバージョン(プラグインの1つのバージョン、プラグインを使用しないアプリの異なるバージョン)を同時に使用できるようになったため、次のようになります。
グラハムペリン

回答:


3

/System/Library/Frameworks/JavaVM.framework/Versionsの内容

ほとんどのユースケースでCurrentJDKは、現在の機能過去のバージョンのJDK。

すべての過去のバージョンではなく、最も一般的に必要なバージョン:

sh-3.2$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.8
BuildVersion:   12A269
sh-3.2$ ls -l /System/Library/Frameworks/JavaVM.framework/Versions
total 64
lrwxr-xr-x  1 root  wheel   10 17 Jul 07:47 1.4 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 17 Jul 07:47 1.4.2 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 17 Jul 07:47 1.5 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 17 Jul 07:47 1.5.0 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 17 Jul 07:47 1.6 -> CurrentJDK
lrwxr-xr-x  1 root  wheel   10 17 Jul 07:47 1.6.0 -> CurrentJDK
drwxr-xr-x  8 root  wheel  272 17 Jul 07:48 A
lrwxr-xr-x  1 root  wheel    1 17 Jul 07:47 Current -> A
lrwxr-xr-x  1 root  wheel   59 17 Jul 07:47 CurrentJDK -> /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents
sh-3.2$ 

14

Javaのバージョンを優先する

通常の方法でJava Preferencesを使用します。

AppleのJavaディストリビューションに加えてインストールしたものによっては、ユーティリティの最初のタブが少し異なる場合があります。

アプレットとJava Web Startの使い慣れたオプションなしの例:

Java設定のスクリーンショット

これがコマンドラインレベルでどのように機能するかについて、いくつかの背景資料があります。コマンドラインツールjava_homeは、この設定を報告します。

$ /usr/libexec/java_home
/Library/Java/JavaVirtualMachines/1.6.0_33-b03-424.jdk/Contents/Home

/ usr / binに/ javaのプレースホルダアプリ、これらの設定を使用するには、Javaの好ましいバージョンを実行します。

$ which java
/usr/bin/java

$ java -version
java version "1.6.0_33"
Java(TM) SE Runtime Environment (build 1.6.0_33-b03-424-11M3720)
Java HotSpot(TM) 64-Bit Server VM (build 20.8-b03-424, mixed mode)

最後に、TomcatまたはMavenの起動スクリプトでJAVA_HOMEを構成するときに、設定システムにフックできます。

export JAVA_HOME=`/usr/libexec/java_home`

他の回答では、Javaはいくつかのパスにインストールされる場合があることに注意してください– 

  • / System / Library / Java / JavaVirtualMachines
  • /ライブラリ/ Java / JavaVirtualMachines
  • 〜/ライブラリ/ Java / JavaVirtualMachines

–しかし、ここの質問で現在説明されているもの、つまりMountain Lion上のOracleのJDKについては、たった1つのパスがあります。


コミュニティの編集に感謝します。バックグラウンドリーディング用に別のリンクが必要ですか?
グラハムペリン

2
Java Preferencesはサポートされなくなり、Java 2012-006アップデートを適用すると実際に削除されます。これは、Javaの提供とサポートから離れるAppleの動きの一部です。
-BryanH

@BryanHに感謝-この回答は、OS X 2012-006のJavaの数か月前に行われました-リンクされた質問を参照してください。また、AppleがJREの配布から遠ざかる一方で、AppleがJavaのサポートをやめると想定すべきではないことに注意してください。
グラハムペリン

はい、ありがとう。「サポート」とは、AppleがOSX用のJava仮想マシンに関する技術的な質問を提供したり回答したりしないことを意味することを明確にする必要があると思います。前述のJVMを作成および保守するのは、Oracle(または別のサードパーティ)次第です。
BryanH

5

以来のMac OS X 10.8.2ビルド12C60のJava環境はもう古いバージョンを表示しません。


3

JDKのインストールに使用されるパス

実行:

ls -l /Library/Java/JavaVirtualMachines

他のパスを使用することもできますが、Mountain LionにインストールされているOracleの現在のJDKの場合、おそらく.jdkそのパスにバンドルがあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.