(Не був впевнений, чи варто це продовжувати на 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- це просто посилання