-3

由于有人将我的问题转移到一个没有太多活动的社区并且评论中提供的解决方案不起作用,因此再次发布。

我已经从这里安装了 Amazon Corretto Java 17 。

但是,我无法将 Java 版本切换到 Java 17。

以下是我已经尝试过的步骤:

1.

export JAVA_HOME=$(`/usr/libexec/java_home -v17`)
  1. export JAVA_HOME=/Library/Java/JavaVirtualMachines/amazon-corretto-17.jdk/Contents/Home
  2. 我还使用以下命令检查了 Java 的最高版本: /usr/libexec/java_home它显示了正确的 Java 17 版本: /Library/Java/JavaVirtualMachines/amazon-corretto-17.jdk/Contents/Home
  3. 我还使用命令检查了我机器上安装的所有 Java 版本,/usr/libexec/java_home -V它正确显示了 Java 8、11 和 17:
17.0.1 (x86_64) "Amazon.com Inc." - "Amazon Corretto 17" /Library/Java/JavaVirtualMachines/amazon-corretto-17.jdk/Contents/Home

11.0.9.1 (x86_64) "Amazon.com Inc." - "Amazon Corretto 11" /Users/harsh.pamnani/Library/Java/JavaVirtualMachines/corretto-11.0.9.1/Contents/Home

1.8.0_275 (x86_64) "Amazon" - "Amazon Corretto 8" /Library/Java/JavaVirtualMachines/amazon-corretto-8.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/amazon-corretto-17.jdk/Contents/Home
  1. 我还添加了和to和toJAVA_HOME中提到的导出。step-1step-2.zshrc.bash_profile
  2. 我也关注了有关 StackOverflow 和多个博客的多个问题。例如,

如何在 macOS 上设置或更改默认 Java (JDK) 版本?

在 mac OS 上切换 java 版本

https://java.tutorials24x7.com/blog/how-to-switch-java-version-on-mac

https://www.lotharschulz.info/2019/08/21/mac-change-default-java-version

https://akrabat.com/using-jenv-to-select-java-version-on-macos/

https://www.happycoders.eu/java/how-to-switch-multiple-java-versions-windows/

  1. jenv用来在不同的java版本之间切换。甚至jenv无法找到 Java 17。我使用jenv versions了以下是输出:
system
  1.8
  1.8.0.275
  11
  11.0
* 11.0.9.1 (set by /Users/harsh.pamnani/.jenv/version)
  corretto64-1.8.0.275
  corretto64-11.0.9.1
  1. 我还检查了JAVA_HOME指向Java 17. 这是屏幕截图:屏幕截图


即使在我执行上述所有步骤之后java --version,它仍然设置为 Java 11:

openjdk 11.0.9.1 2020-11-04 LTS
OpenJDK Runtime Environment Corretto-11.0.9.12.1 (build 11.0.9.1+12-LTS)
OpenJDK 64-Bit Server VM Corretto-11.0.9.12.1 (build 11.0.9.1+12-LTS, mixed mode)
  1. 我还检查了PATH变量,似乎没有什么与 Java 相关。以下是路径变量的输出:
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
/Users/harsh.pamnani/Downloads/apache-maven-3.6.3/bin

有人可以帮我理解我是否在这里遗漏了什么。谢谢你。

4

1 回答 1

1

which java通常用于查找您在键入时调用的确切可执行文件java

请记住,当您键入命令时,java您的 JAVA_HOME 设置不会被使用。而是使用操作系统PATH设置。如果您有一个较旧的 java 副本“在”您想要在路径上使用的那个之前,那么这就是操作系统将为您提供的。要解决这样的问题,您需要更改路径,以使所需 Java 版本的目录位于任何其他 Java 版本之前。

我确实看到您检查了您的PATH设置,但我认为您不知道要检查什么,因为您只列出了目录。在这些目录中,存在一个java可执行文件。如果旧可执行文件位于路径中较早的目录中,则无论其他设置如何,这都是您从命令行运行它时将获得的 java 版本。

现在,正确设置 JAVA_HOME 仍然很重要,因为当各种 Java 工具想要发现项目时,您可能会读取 JAVA_HOME(如果错误,则被定向到不匹配的 JVM)。

于 2021-12-05T04:39:24.263 回答