(これが SU に移行するかどうかはわかりませんでした...移行は確かにオプションですが、より多くのプログラマーがここで質問を読んでいるので、ここに行きます)。
私は Mac OS X 10.8.4 を実行しており、Apple の JDK 1.6.0_51 と Oracle の JDK 1.7.0_25 をインストールしています。私は最近、Oracle の 1.8 プレビュー JDK を必要とするいくつかのプレリリース ソフトウェア用にインストールしました。/usr/libexec/java_home を実行すると、次のようになります。
$ /usr/libexec/java_home -V
Matching Java Virtual Machines (4):
1.8.0, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0.jdk/Contents/Home
1.7.0_25, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home
1.6.0_51-b11-457, x86_64: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
1.6.0_51-b11-457, i386: "Java SE 6" /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
偉大な。
ただし、実行中:
$ java -version
戻り値:
java version "1.8.0-ea"
つまり、Java のデフォルト バージョンは現在プレリリース バージョンであり、一部の「通常の」パッケージ (私の場合は VisualVM) が機能しません。
JAVA_HOME
コマンドラインから起動しても環境変数を無視して起動するため設定できません(例$ open /Applications/VisualVM.app
)。
では、JVM の順序設定をグローバルに設定できる編集可能なファイルはありますか?
(Java 設定パネルを起動するように言わないでください。これは単に機能しないためです。有用なものは何も含まれておらず、インストールした 4 つの JVM のうちの 1 つしか一覧表示されません。)
更新:
Oracle JVM は にあり/Library/Java/JavaVirtualMachines
ます。JDK 1.8 ディレクトリの名前を に変更しても、jdk1.8.0.jvm.xyz
何も変わりません。java_home
適切な場所で見つかり、/usr/bin/java を実行すると、1.8 JVM が実行されます。これはシンリンクなどの問題ではありません。
同様の質問への回答
この回答は、Java のバージョンが java_home によって取得されないようにするハックに相当するものを提供しますが、 java_home がデフォルトをどのように選択するか、およびユーザーが非破壊的に設定できるかどうかというこの質問にはまだ答えていません。