当前位置: 首页 > 知识库问答 >
问题:

(Mac OS)JAVA版本不变

湛宜春
2023-03-14

我的MacBook上有两个JAVA版本。我想把14版改成11版。我在网上找到了两个解决方案,但都不起作用。

我的java版本结果是

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)

第一个解决方案(如何在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

然后我做了

export JAVA_HOME=`/usr/libexec/java_home -v 11.0.8`

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

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

export JAVA_HOME=`/usr/libexec/java_home -v 11.0.8`
source ~/.bash_profile
echo $JAVA_HOME

它显示了结果,

/Library/Java/JavaVirtualMachines/jdk-11.0.8.jdk/Contents/Home

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

共有1个答案

诸葛利
2023-03-14

安装sdkman,它处理您必须使用的相当繁琐的命令行巫术,以尝试实现这一点。问题是,JAVA_HOME只是一个环境变量,它什么也不会改变--只有显式查找它的工具(通常,maven和ant就是一个例子)才会受到影响。当您在mac上键入java时,它将运行/usr/bin/java,这是一个即使作为root用户也不能更改的文件。然后,这个java将调用真正的java,而不是查看JAVA_HOME来完成工作:它是/system/library/frameworks/javavm.framework/versions/current/commands/java的软链接,因为它在/system中,所以您也不能更改它,即使作为root用户也不行。

这就是为什么这是如此困难的原因,也是为什么您需要一个很好的工具(sdkman)来为您做这件事的原因。

 类似资料:
  • 我被告知从其他stackoverflow帖子将遗留配置文件切换到核心配置文件,但我似乎找不到这样做的方法。所以我假设一个更新的错误帖子来帮助我找到一个方法。 代码: 我一直收到这个错误 回溯(最近一次调用): 我似乎找不到任何方法来解决这个问题。我是OpenGL/PyOpenGL新手,找不到任何提出大致相同问题的帖子

  • 我对mac相当陌生,并尝试通过玩来学习一些东西。目前,我正在尝试在我的macbook上运行XAMPP上的新PHP版本。我为此阅读了不同的线程和教程(例如,有没有办法在XAMPP中使用两个PHP版本?)但我被卡住了。这是我得到的: macOS Mojave with XAMPP 5.6.31-0 with PHP version 5.6.31 PHP

  • 这个包其实有新版本,但源仍是 0.5.6 仅针对 brew 应该怎么更新版本安装

  • 我正在运行

  • 我目前安装了Java8(更新171)和Oxygen.3a(4.7.3a)(Eclipse版本)。我以前下载过Java10,但我读到有一个bug,WindowBuilder不能在该版本上工作,它被推荐为版本8,这是我下载并安装的版本(在卸载版本10后)。但问题还在。 我能做些什么来解决这个问题?谢谢你。

  • 根据我的理解,这是一个java版本问题。因此,我继续安装Java1.8。 当我运行时,我得到以下信息: java版本“1.8.0_77”java(TM)SE运行时环境(build1.8.0_77-b03)java HotSpot(TM)64位服务器VM(build25.77-b03,混合模式) 我对java和selenium还很陌生,不能理解这是一个很好的深度。任何帮助修复这是非常感谢的。