Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何让MacOS(Catalina)使用自定义Java版本?_Java_Macos_Java 11_Macos Catalina - Fatal编程技术网

如何让MacOS(Catalina)使用自定义Java版本?

如何让MacOS(Catalina)使用自定义Java版本?,java,macos,java-11,macos-catalina,Java,Macos,Java 11,Macos Catalina,我正在尝试将机器上的默认Java版本从版本15(即openjdk 15.0.1)更改为版本11(即openjdk 11.0.2)。我遵循了在线提供的各种解决方案,但最终我只希望得到以下结果: $ java --version openjdk 11.0.9 2020-10-20 OpenJDK Runtime Environment (build 11.0.9+9) OpenJDK 64-Bit Server VM (build 11.0.9+9, mixed mode, sharing) 但

我正在尝试将机器上的默认Java版本从版本15(即openjdk 15.0.1)更改为版本11(即openjdk 11.0.2)。我遵循了在线提供的各种解决方案,但最终我只希望得到以下结果:

$ java --version
openjdk 11.0.9 2020-10-20
OpenJDK Runtime Environment (build 11.0.9+9)
OpenJDK 64-Bit Server VM (build 11.0.9+9, mixed mode, sharing)

但是,我得到的是:

$ java --version
openjdk 15.0.1 2020-10-20
OpenJDK Runtime Environment (build 15.0.1+9)
OpenJDK 64-Bit Server VM (build 15.0.1+9, mixed mode, sharing)
我找到的大多数解决方案都建议为我的
JAVA HOME
环境变量设置一个新值(包括内联变量和
.bash\u profile
),其中截至目前,我有:

$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk-11.0.9.jdk/Contents/Home
甚至完全从
/Library/Java/JavaVirtualMachines/
中删除
jdk-15.0.1.jdk
似乎也没有改变任何事情。因此,这个JDK必须在其他地方定义和使用,它的存在将覆盖我在
.bash\u profile
文件中放置的任何内容。以前有其他人经历过吗?是否可以进行此更改?

请确保
.bash\u配置文件中关于
JAVA\u HOME
的第一行是:

export JAVA_HOME=$(/usr/libexec/JAVA_HOME-v11.0.9)

您可以运行
/usr/libexec/java_home-V
查看所有已安装java虚拟机的列表。在我的机器上,我有以下内容(我的机器看起来略有不同,因为此输出来自Big Sur):


底线(这可能在Catalina中不存在,但您可以通过运行
/usr/libexec/java_home
来获得它,这是您当前选择的JVM。

结果表明,问题出在我的
.bash_配置文件
中。虽然我不确定是否每个人都是这样,但我的
路径
环境变量设置取代了我的
java_home 环境变量和my
PATH
变量在其中引用了my
JAVA\u HOME
变量。这通过在my
.bash\u profile
文件中更改以下内容来解决

如果
JAVA\u HOME
是唯一添加的变量,那么下面的操作应该有效

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.9.jdk/Contents/Home

export PATH=$JAVA_HOME/bin
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.9.jdk/Contents/Home

export SOME_OTHER_PATH=/somepath

export PATH=$SOME_OTHER_PATH:$JAVA_HOME/bin
如果还有其他的,那么这应该是可行的

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.9.jdk/Contents/Home

export PATH=$JAVA_HOME/bin
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.9.jdk/Contents/Home

export SOME_OTHER_PATH=/somepath

export PATH=$SOME_OTHER_PATH:$JAVA_HOME/bin

谢谢大家的帮助!

另外,如果链接问题中的第一个答案对你没有帮助,第二个五月。对不起,这又是一个参考答案…不是官方答案,但它是你的朋友。但这只是让JAVA_回家了,对吗?OP说他们尝试过,但它没有改变任何东西…如果我阅读正确的话。@Steve是的,它有。我知道怀疑问题仍然存在于
$JAVA_HOME
(我自己处理了很多问题),除非我误解了这个问题,在这种情况下,你链接的问题似乎是最好的选择。嗨@Sam,这是我
.bash\u profile
中的第一行。我已经尝试了一些快速解决方案,但我不确定发生了什么。看起来好像它完全忽略了这个文件。@ChloeBennett好的,只是为了让su知道如果文件正常工作,请将行
echo“Profile Test”
添加到
.bash\u Profile
中,然后打开一个新的shell/源文件以显示您的配置文件。“Profile Test”应该打印在提示符上方。行吗?@Sam,行了。