为什么命令 /usr/libexec/java_home 不起作用?
Why command /usr/libexec/java_home doesn't work?
OS: MacOS 大苏尔 11.0.1
我使用 /usr/libexec/java_home
命令更改 java 版本。
有些程序运行需要特殊版本。所以我安装了 java.
的多个版本
/usr/libexec/java_home -V
Matching Java Virtual Machines (7):
14.0.1 (x86_64) "Oracle Corporation" - "Java SE 14.0.1" /Library/Java/JavaVirtualMachines/jdk-14.0.1.jdk/Contents/Home
13 (x86_64) "Oracle Corporation" - "Java SE 13" /Library/Java/JavaVirtualMachines/jdk-13.jdk/Contents/Home
10.0.2.0.13 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
10.0.2 (x86_64) "Oracle Corporation" - "Java SE 10.0.2" /Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home
1.8.0_192 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home
1.8.0_111 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
1.7.0_80 (x86_64) "Oracle Corporation" - "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk-14.0.1.jdk/Contents/Home
我配置了 .bash_profile
:
export JAVA_HOME=$(/usr/libexec/java_home)
export JAVA_7_HOME=$(/usr/libexec/java_home -v1.7)
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_10_HOME=$(/usr/libexec/java_home -v10)
export JAVA_13_HOME=$(/usr/libexec/java_home -v13)
alias jdk7="export JAVA_HOME=$JAVA_7_HOME"
alias jdk8="export JAVA_HOME=$JAVA_8_HOME"
alias jdk10="export JAVA_HOME=$JAVA_10_HOME"
alias jdk13="export JAVA_HOME=$JAVA_13_HOME"
export MAVEN_HOME=/Users/peizangpin/Program/apache-maven-3.6.3
export PATH=$PATH:$MAVEN_HOME/bin
export GRADLE_HOME=/Users/peizangpin/Program/gradle-6.7
export PATH=$PATH:$GRADLE_HOME/bin
export GRADLE_USER_HOME=/Users/peizangpin/Documents/ResuorcesPackage/gradle
export PATH=/opt/local/bin:$PATH
export PATH=/opt/local/sbin:$PATH
export PATH=/usr/local/bin:$PATH
export PATH=/usr/local/mysql/bin:$PATH
export PATH=$PATH:/usr/local/opt/go/libexec/bin
export PATH=$PATH:/usr/local/go/bin
export PATH=$PATH:/usr/local/opt/rabbitmq/sbin
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
source ~/.bashrc
至少它在 MacOS 更新之前是有效的。
但是现在:
一直使用jdk14.
这对我来说是个问题。
既然你在更新 MacOS 之前说它有效,请验证你的 shell 是 bash(新的默认值是 zsh)。尝试像 echo $ZSH_NAME
这样的东西:如果它是空白的,那么你是 运行 zsh 而不是 bash。
尝试 env JAVA_HOME=JAVA_13_HOME mvn ...
来验证您的配置。
感谢@MarioStefanutti 的分享link。
因为 JAVA_HOME
变量已设置。
/usr/libexec/java_home -v {pattern}
将无用。
所以,解决方法是在设置JAVA_HOME
之前执行/usr/libexec/java_home -v {pattern}
。
export JAVA_7_HOME=$(/usr/libexec/java_home -v1.7)
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_10_HOME=$(/usr/libexec/java_home -v10)
export JAVA_13_HOME=$(/usr/libexec/java_home -v13)
# finally set JAVA_HOME
export JAVA_HOME=$(/usr/libexec/java_home)
...
在设置JAVA_HOME
之前使用/usr/libexec/java_home -v {version}
,否则总是return设置在JAVA_HOME
在shell初始化中,命令你的语句在设置JAVA_HOME
之前通过/usr/libexec/java_home -v {version}
捕获所有需要的信息
在其他情况下,或者如果您想绝对确定,您可以先 unset JAVA_HOME
然后再使用 /usr/libexec/java_home -v {version}
例如,当使用 direvn 之类的东西时,.envrc
文件看起来像
unset JAVA_HOME
export JAVA_HOME=$(/usr/libexec/java_home -v 11)
PATH_add $JAVA_HOME/bin
OS: MacOS 大苏尔 11.0.1
我使用 /usr/libexec/java_home
命令更改 java 版本。
有些程序运行需要特殊版本。所以我安装了 java.
的多个版本 /usr/libexec/java_home -V
Matching Java Virtual Machines (7):
14.0.1 (x86_64) "Oracle Corporation" - "Java SE 14.0.1" /Library/Java/JavaVirtualMachines/jdk-14.0.1.jdk/Contents/Home
13 (x86_64) "Oracle Corporation" - "Java SE 13" /Library/Java/JavaVirtualMachines/jdk-13.jdk/Contents/Home
10.0.2.0.13 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
10.0.2 (x86_64) "Oracle Corporation" - "Java SE 10.0.2" /Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home
1.8.0_192 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_192.jdk/Contents/Home
1.8.0_111 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home
1.7.0_80 (x86_64) "Oracle Corporation" - "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk-14.0.1.jdk/Contents/Home
我配置了 .bash_profile
:
export JAVA_HOME=$(/usr/libexec/java_home)
export JAVA_7_HOME=$(/usr/libexec/java_home -v1.7)
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_10_HOME=$(/usr/libexec/java_home -v10)
export JAVA_13_HOME=$(/usr/libexec/java_home -v13)
alias jdk7="export JAVA_HOME=$JAVA_7_HOME"
alias jdk8="export JAVA_HOME=$JAVA_8_HOME"
alias jdk10="export JAVA_HOME=$JAVA_10_HOME"
alias jdk13="export JAVA_HOME=$JAVA_13_HOME"
export MAVEN_HOME=/Users/peizangpin/Program/apache-maven-3.6.3
export PATH=$PATH:$MAVEN_HOME/bin
export GRADLE_HOME=/Users/peizangpin/Program/gradle-6.7
export PATH=$PATH:$GRADLE_HOME/bin
export GRADLE_USER_HOME=/Users/peizangpin/Documents/ResuorcesPackage/gradle
export PATH=/opt/local/bin:$PATH
export PATH=/opt/local/sbin:$PATH
export PATH=/usr/local/bin:$PATH
export PATH=/usr/local/mysql/bin:$PATH
export PATH=$PATH:/usr/local/opt/go/libexec/bin
export PATH=$PATH:/usr/local/go/bin
export PATH=$PATH:/usr/local/opt/rabbitmq/sbin
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
source ~/.bashrc
至少它在 MacOS 更新之前是有效的。
但是现在:
一直使用jdk14.
这对我来说是个问题。
既然你在更新 MacOS 之前说它有效,请验证你的 shell 是 bash(新的默认值是 zsh)。尝试像 echo $ZSH_NAME
这样的东西:如果它是空白的,那么你是 运行 zsh 而不是 bash。
尝试 env JAVA_HOME=JAVA_13_HOME mvn ...
来验证您的配置。
感谢@MarioStefanutti 的分享link。
因为 JAVA_HOME
变量已设置。
/usr/libexec/java_home -v {pattern}
将无用。
所以,解决方法是在设置JAVA_HOME
之前执行/usr/libexec/java_home -v {pattern}
。
export JAVA_7_HOME=$(/usr/libexec/java_home -v1.7)
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_10_HOME=$(/usr/libexec/java_home -v10)
export JAVA_13_HOME=$(/usr/libexec/java_home -v13)
# finally set JAVA_HOME
export JAVA_HOME=$(/usr/libexec/java_home)
...
在设置JAVA_HOME
之前使用/usr/libexec/java_home -v {version}
,否则总是return设置在JAVA_HOME
在shell初始化中,命令你的语句在设置JAVA_HOME
/usr/libexec/java_home -v {version}
捕获所有需要的信息
在其他情况下,或者如果您想绝对确定,您可以先 unset JAVA_HOME
然后再使用 /usr/libexec/java_home -v {version}
例如,当使用 direvn 之类的东西时,.envrc
文件看起来像
unset JAVA_HOME
export JAVA_HOME=$(/usr/libexec/java_home -v 11)
PATH_add $JAVA_HOME/bin