在Mac OS上切换Java版本

6

我想要通过以下方式切换Java版本:

export JAVA_HOME='/usr/libexec/java_home -v 1.8.0_172'

但是当我运行java -version时,会得到以下输出:

java version "10.0.1" 2018-04-17 Java(TM) SE Runtime Environment 18.3 (build 10.0.1+10) Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.1+10, mixed mode)

我想在MAC上切换到1.8.0_172版本,应该怎么做?


@lakshman 看起来 OP 已经在尝试应用那个问题的解决方案了。 - Mark Rotteveel
1
@MarkRotteveel:不是的。OP使用引号而不是反引号,还有其他答案。 - lakshman
2
@lakshman 我说的是尝试,而大多数其他答案都是在这个主题上变化。我认为最初指出这个错误会对不熟悉bash的人有所帮助(因为这是非显而易见的)。 - Mark Rotteveel
5个回答

8

假设您已经安装了jdk1.8.0.172,一种选项是:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_172.jdk/Contents/Home


1
查看可用的Java版本: ls /Library/Java/JavaVirtualMachines/ - A H

6

我认为最简单的方法是使用jenv

它类似于rvm或nvm,可以轻松切换Java版本。

步骤:

brew install jenv

Bash

echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.bash_profile

echo 'eval "$(jenv init -)"' >> ~/.bash_profile

Zsh

echo 'export PATH="$HOME/.jenv/bin:$PATH"' >> ~/.zshrc

echo 'eval "$(jenv init -)"' >> ~/.zshrc

在终端中运行unset JAVA_TOOL_OPTIONS (这是一种预防措施,以防输出破坏文本解析。在我的情况下,这确实有所区别)

jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home

jdk1.8.0_231.jdk -> 使用您机器上的任意版本。

然后使用javac -version验证已更改版本。


1
谢谢。我发现这个解决方案更加健壮,以便为未来提供保障。 - Spencer

4

对我来说上述方法有效(去掉引号),适用于Mac OS Catalina,但我还必须像下面这样设置路径变量:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/{java version.jdk}/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

在运行后,{java_version.jdk}是列出的任何Java版本之一

/usr/libexec/java_home -V 

2
/usr/libexec/java_home -V

上述命令将显示您系统中安装的所有Java版本。
export JAVA_HOME=`/usr/libexec/java_home -v <VERSION YOU WANT TO USE FROM ABOVE LIST`>

0
1. 在您的 Mac 上安装您想要的所有 Java 版本,请参考:https://www.oracle.com/java/technologies/downloads/
~ % ls /Library/Java/JavaVirtualMachines/
jdk-1.8.jdk jdk-11.jdk  jdk-17.jdk  jdk-21.jdk

2. 检查您已安装的所有Java版本。
/usr/libexec/java_home -V

3. 设置 .zshenv
  alias j8="export JAVA_HOME=`(/usr/libexec/java_home -v1.8)`; java -version"
  alias j11="export JAVA_HOME=`(/usr/libexec/java_home -v11)`; java -version"
  alias j17="export JAVA_HOME=`(/usr/libexec/java_home -v17)`; java -version"
  alias j21="export JAVA_HOME=`(/usr/libexec/java_home -v21)`; java -version"

4. 在.zshrc文件中全局设置默认的JDK版本。
export JAVA_HOME=`(/usr/libexec/java_home -v1.8.xxxx)`

5. 最后,你可以通过 j** 来切换 JDK 版本。
~ % j8
java version "1.8.0_391"
Java(TM) SE Runtime Environment (build 1.8.0_391-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.391-b13, mixed mode)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接