Как изменить версию JDK на Big Sur?

Теперь, когда я на Big Sur, я больше не могу установить свой jdk! Я делал это:

$ /usr/libexec/java_home -v 15

Теперь он просто отвечает так:

$ /usr/libexec/java_home -v 15
/Library/Java/JavaVirtualMachines/jdk-12.0.2.jdk/Contents/Home

До Big Sur эта команда всегда возвращала путь jdk для указанной мной версии. В моем файле .bash_profile определены эти псевдонимы:

alias j15 = "export JAVA_HOME=`/usr/libexec/java_home -v 15`; java -version"
alias j12 = "export JAVA_HOME=`/usr/libexec/java_home -v 12`; java -version"
alias j11 = "export JAVA_HOME=`/usr/libexec/java_home -v 11`; java -version"
alias j10 = "export JAVA_HOME=`/usr/libexec/java_home -v 10`; java -version"
alias j8 = "export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_212`; java -version"
alias j7 = "export JAVA_HOME=`/usr/libexec/java_home -v 1.7`; java -version"
j12

Так что это начнется с Java 12, но я мог бы просто набрать j15, и мой jdk установился бы на 15. Но теперь ни один из них не работает. Я могу ввести любой из них, но он остается на JDK 12. (У меня есть разные проекты, для которых требуются разные версии JDK.)

Есть ли лучший способ сделать это сейчас?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
0
1 003
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Перечислите все версии с заглавной «V»:

/usr/libexec/java_home -V

Вывод на моей машине:

Matching Java Virtual Machines (2):
    11.0.9 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 11" /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
    1.8.0_181 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 8" /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home

При выборе конкретной версии заключайте ее в кавычки:

/usr/libexec/java_home -v "11.0.9"

Исправление для установки или отмены текущей JAVA_HOME:

unset JAVA_HOME
export JAVA_HOME=$(/usr/libexec/java_home -v "11.0.9")

Спасибо. Я не уверен, зачем мне теперь нужны кавычки, но это работает. Но это работает только тогда, когда JAVA_HOME не установлен. Это усложняет использование, но я смог заставить его работать.

MiguelMunoz 10.12.2020 04:01

@MiguelMunoz Как бы то ни было (и для потомков), вам на самом деле не нужны кавычки — проблема в том, что теперь вы должны unset JAVA_HOME перед установкой каждый раз

Sam 11.12.2020 00:39

Другие вопросы по теме

Похожие вопросы

Превратите текст в массив строк, найдите строку, отправленную во второй позиции, и замените ее строкой в ​​​​третьей позиции
Может ли статическая переменная инициализироваться много раз из-за выгрузки класса?
Как получить доступ к представлениям, программно добавленным в пользовательское представление?
Как распечатать содержимое массива для случайной сортировки вставки вместе со словами перед случайным числом?
Генератор первичного ключа всякий раз, когда используется вставка
Почему обратный вызов клавиатуры работает дважды и выполняет двойную печать клавиш (Java/JNA)?
Если мы изменим фрагмент до завершения обратного отсчета, приложение вылетит в Android
Продолжить чтение списка с определенной точки - База данных Firebase
Имя файла со скриншотом [SomeRandomnumber.png] создается внутри var/tmp при использовании селена — java
Получение файла pdf или doc из папки загрузок в Android