Невозможно изменить JDK в ОС Ma c с помощью Jenv - PullRequest
0 голосов
/ 26 мая 2020

Я использую Amazon corretto JDK, и раньше в моей ОС Ma c было установлено только 1.8, вчера я установил Amazon corretto JDK 11 с помощью установщика пакетов ОС Ma c, а после этого он изменил мою версию java по умолчанию на 11.

Я подписался на блог с высоким рейтингом medium на Jenv , чтобы управлять несколькими версиями на Ma c OS, но моя версия java по умолчанию не переключается обратно на 1.8 и не сделала этого. t получить какую-либо ошибку при следующем ответе stackoverflow или среднем сообщении.

команда с использованием Jenv

версий jenv

  system
  1.8
* 1.8.0.252 (set by /Users/my user/.jenv/version) // note `*` that should tell the current version IMO
  11
  11.0
  11.0.7
  corretto64-1.8.0.252
  corretto64-11.0.7

вывод java -version

java --version openjdk 11.0.7 2020-04-14 LTS OpenJDK Runtime Environment Corretto-11.0.7.10.1 (сборка 11.0.7 + 10-LTS) 64-разрядная серверная виртуальная машина OpenJDK Corretto-11.0.7.10.1 (сборка 11.0.7 + 10-LTS, смешанный режим)

Примечание. У меня есть несколько приложений, в которых используются разные версии JDK, и я не хочу использовать псевдоним для управления версией JDK, меня интересует Jenv, где я могу et мою версию JDK глобально (1.8 в моем случае) и локально (в зависимости от того, какое приложение использует JDK).

Ответы [ 2 ]

0 голосов
/ 26 мая 2020

Попробуйте добавить это в свой .bash_profile или .zshr c или .bashr c в зависимости от того, что имеет отношение к вашей macOS.

jdk() {
        version=$1
        export JAVA_HOME=$(/usr/libexec/java_home -v"$version");
        java -version
 }

Затем перезапустите терминал, и вы сможете переключать java версии, например:

  • jdk 1.8
  • jdk 11
0 голосов
/ 26 мая 2020

За кулисами jenv использует каталог / Library / Java / JavaVirtualMachines.

Затем вы также можете набрать /usr/libexec/java_home -V, чтобы показать все доступные JDK и проанализировать вашу проблему:

Matching Java Virtual Machines (4): 
11.0.2_2-OracleJDK, x86_64: "Java SE 11.0.2" /Library/Java/JavaVirtualMachines/OracleJDK-jdk-11.0.2.jdk/Contents/Home 
11.0.2_1-OpenJDK, x86_64: "OpenJDK 11.0.2" /Library/Java/JavaVirtualMachines/OpenJDK-jdk-11.0.2.jdk/Contents/Home 
1.8.0_11, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home 
1.7.0_45, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home 

/Library/Java/JavaVirtualMachines/OracleJDK-jdk-11.0.2.jdk/Contents/Home

В этом примере export JAVA_HOME=$(/usr/libexec/java_home -v 1.8) устанавливает версию JDK 1.8.

Таким образом, вы даже можете определить следующие псевдонимы:

java11_OpenJDK_export='export JAVA_HOME=$(/usr/libexec/java_home -v 11.0.2_1-OpenJDK)'
java11_OracleJDK_export='export JAVA_HOME=$(/usr/libexec/java_home -v 11.0.2_2-OracleJDK)'
java7_export='export JAVA_HOME=$(/usr/libexec/java_home -v 1.7)'
java8_export='export JAVA_HOME=$(/usr/libexec/java_home -v 1.8)'

NB: Версия для использования после java_home -v определяется в каждой установке JDK в Contents / Info.plist файловом разделе JVMVersion .

Я изменил его, чтобы легко переключаться между OpenJDK и Oracle JDK:

$ tail -5 /Library/Java/JavaVirtualMachines/OpenJDK-jdk-11.0.2.jdk/Contents/Info.plist | head -2
<key>JVMVersion</key>
<string>11.0.2_1-OpenJDK</string>

$ tail -5 /Library/Java/JavaVirtualMachines/OracleJDK-jdk-11.0.2.jdk/Contents/Info.plist | head -2
<key>JVMVersion</key>
<string>11.0.2_2-OracleJDK</string>

Итак, в вашем случае у вас есть две версии 1.8 (1.8 и 1.8.0.252). Более чем вероятно, что вам следует обновить их Contents / Info.plist раздел файла JVMVersion .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...