(Mac OS) JAVA版本不变

Hik*_*ndo 10 java macos java-home

我的 Macbook 上有 2 个 JAVA 版本。我想将版本从 14 更改为 11。我在互联网上找到了 2 个解决方案,但都不起作用。

我的java -version结果是

openjdk version "14.0.1" 2020-04-14
OpenJDK Runtime Environment (build 14.0.1+14)
OpenJDK 64-Bit Server VM (build 14.0.1+14, mixed mode, sharing)
Run Code Online (Sandbox Code Playgroud)

第一个解决方案(如何在 OS X 上设置或更改默认 Java (JDK) 版本?), 我运行/usr/libexec/java_home -V然后得到下面的结果,

Matching Java Virtual Machines (2):
14.0.1, x86_64: "OpenJDK 14.0.1"    /Library/Java/JavaVirtualMachines/openjdk.jdk/Contents/Home
11.0.8, x86_64: "Java SE 11.0.8"    /Library/Java/JavaVirtualMachines/jdk-11.0.8.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)

然后我做了

export JAVA_HOME=`/usr/libexec/java_home -v 11.0.8`
Run Code Online (Sandbox Code Playgroud)

java -version检查后,结果仍然是 14.0.1

第二个解决方案(如何在 Mac 中永久设置 JAVA_HOME?),我编辑 ~/.bash_profile 文件如下,

export JAVA_HOME=`/usr/libexec/java_home -v 11.0.8`
Run Code Online (Sandbox Code Playgroud)

我运行命令

source ~/.bash_profile
echo $JAVA_HOME
Run Code Online (Sandbox Code Playgroud)

它显示了结果,

/Library/Java/JavaVirtualMachines/jdk-11.0.8.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)

但是当我用java -version检查结果时,它仍然是 14.0.1

rzw*_*oot 10

安装sdkman来处理相当繁琐的命令行巫毒,你必须使用它来尝试实现这一点。问题是,JAVA_HOME 只是一个环境变量,它不会改变任何东西 - 只有明确查找它的工具(通常,例如 maven 和 ant)才会受到弄乱它的影响。java当您在 Mac 上键入时,它会运行/usr/bin/java,这不是一个即使作为 root 也可以更改的文件。然后,这个 java 将调用真正的 java,并且不会查看 JAVA_HOME来完成工作:它是到 的软链接/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java,并且因为它位于/System您也无法更改它,即使作为 root 也无法更改。

这就是为什么这如此困难,以及为什么你需要一个好的工具(sdkman)来为你做这件事。


Pel*_*loa 6

删除 JAVA_HOME 周围的引号,然后设置路径变量对我有用(Mac OS Catalina):

export JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
Run Code Online (Sandbox Code Playgroud)