Теперь, когда я на 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.)
Есть ли лучший способ сделать это сейчас?
Перечислите все версии с заглавной «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")
@MiguelMunoz Как бы то ни было (и для потомков), вам на самом деле не нужны кавычки — проблема в том, что теперь вы должны unset JAVA_HOME
перед установкой каждый раз
Спасибо. Я не уверен, зачем мне теперь нужны кавычки, но это работает. Но это работает только тогда, когда JAVA_HOME не установлен. Это усложняет использование, но я смог заставить его работать.