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