(Не был уверен, стоит ли это делать с SU... миграция, безусловно, вариант, но больше программистов читают вопросы здесь, так что здесь).
Я использую Mac OS X 10.8.4, и у меня установлена Apple JDK 1.6.0_51 и Oracle JDK 1.7.0_25. Я недавно установил JDK предварительного просмотра Oracle 1.8 для некоторой предварительной версии программного обеспечения, которое требует этого. Теперь, когда я запускаю /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, которые я установил.)
Обновление:
Oracle JVM живут в /Library/Java/JavaVirtualMachines
. jdk1.8.0.jvm.xyz
каталога JDK 1.8 в jdk1.8.0.jvm.xyz
ничего не меняет: java_home
прежнему находит его в нужном месте, а запуск /usr/bin/java по-прежнему выполняет 1.8 JVM. Это не проблема с ссылками и т.д.
Ответы на похожие вопросы
Хотя этот ответ предлагает то, что составляет хак, который удалит версии Java от выбора java_home, он по-прежнему не отвечает на вопрос о том, как java_home выбирает значение по умолчанию и могут ли пользователи устанавливать его неразрушающим образом.