(Не был уверен, должно ли это происходить в 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, которые я установил.)
Обновление :
JVM Oracle живут в /Library/Java/JavaVirtualMachines
. Переименование каталога JDK 1.8 на jdk1.8.0.jvm.xyz
ничего не меняет: он по- java_home
прежнему находится в нужном месте, а при запуске / usr / bin / java по-прежнему выполняется JVM 1.8. Это не проблема с синлинками и т. Д.
Ответы на похожие вопросы
Хотя этот ответ предлагает то, что составляет взлом, который удалит версии Java из подбора java_home, он все еще не отвечает на этот вопрос о том, как java_home выбирает свое значение по умолчанию и могут ли пользователи установить его неразрушающим образом .
/usr/bin/java
указывает на /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
. Versions
Каталог не содержит символьную ссылку на 1.8.0 JDK. Вместо этого, он содержит каталог услужливо под названием , A
которое Current
указывает. A
не является "JAVA_HOME. У него есть подкаталог, Commands
который называется, в котором есть java
команда, но это непрозрачный универсальный двоичный файл, который делает неизвестно что. Я подозреваю, что он использует java_home
и т. д., чтобы решить, какую JVM использовать.
/usr/bin/java
это просто символическая ссылка