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

升级到macOS Big Sur V11.0.1后出现错误的JAVA_HOME

益光亮
2023-03-14

在macOS上的设置中,我使用了几个JDK,通过/usr/libexec/java_home工具在它们之间切换,类似于本SO答案中描述的方法

升级到macOS Big Surv11.0.1后,我的JAVA_HOME设置停止工作,始终报告相同的java版本:

% /usr/libexec/java_home -V
Matching Java Virtual Machines (5):
    11.0.8 (x86_64) "AdoptOpenJDK" - "AdoptOpenJDK 11" /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
    1.8.162.12 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
    1.8.0_162 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home
    1.8.0_45 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home
    1.7.0_45 (x86_64) "Oracle Corporation" - "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home

% /usr/libexec/java_home -v 1.8.162.12
/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home

% /usr/libexec/java_home -v 1.7.0_45
/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home

共有1个答案

陆雅志
2023-03-14

在macOS Big Sur V11.0.1中,/usr/libexec/java_home-v...命令的行为似乎发生了变化:它对java_home环境变量先前设置的值敏感。

确切的行为并不清楚,我找不到任何关于这一点的文档,但在我的实验中,它报告了java_home中已经设置的版本,而不管-v开关:

% JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home /usr/libexec/java_home -v 1.8.0_162
/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home

此外,我注意到,如果设置了java_home,它没有报告任何内容,但没有指向有效的java主页(对于-v):

% JAVA_HOME=dummy /usr/libexec/java_home -v 1.7.0_45
% JAVA_HOME=dummy /usr/libexec/java_home -V
%

解决方案是确保在执行/usr/libexec/java_home之前未设置java_home:

% unset JAVA_HOME ; /usr/libexec/java_home -v 1.8.0_162
/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home
 类似资料:
  • 问题内容: 我有一个用于签署XML文档的Java应用程序。将Java升级到最新版本(Java7u25)后,它将停止工作。我收到以下错误: 恢复为java7u21解决了该问题。XML Dig Sig API中是否有任何导致此错误的更改? 问题答案: 这里同样的问题。由于不断发展,似乎是JVM内部的错误。 我已经将其归结为 在Java 7u21及之前的版本中: 在Java 7u25中: 指的是XML

  • 我正在Mac OS X上运行。我最近将node和npm更新到了最新版本,按照以下已接受的回答步骤将node.js升级到Mac OS上的最新版本。node:和npm:现在当我运行我的Gulp文件时,我得到了这个错误: 有人知道这是什么问题吗?

  • 在我升级到Typescript 2.9.1(从2.8)之后,我得到了编译错误 当我使用typecript 2.7和2.8时,这从未发生过。 环境: MacOS 10.13.5 节点。JSV9。11.1 NPM:6.1.0 Typescript 2.9.1(在我的项目的文件夹中,没有全局Typescript)

  • 我正在尝试将项目从3.6.10版升级到4.3.6版,在应用程序启动时出现“提交失败”错误。而不是使用: ,为了获得会话,现在我正在使用: 事务由TransactionManager和Spring的NameMatchTransactionAttribute资源处理。 这是我得到的堆栈跟踪: 这是我的会话工厂bean配置:

  • 运行Firebase upgrade命令后,我尝试在模拟器中运行我的应用程序,出现了以下错误消息: 在调试模式下在 sdk gphone64 x86 64 上启动 lib\main.dart...运行 Gradle 任务 'assembleDebug'... /C:/src/flutter/.pub-cache/hosted/pub.dartlang.org/firebase_core-1.24.

  • 问题内容: 我今天从Java 1.6升级到Java 1.7。从那时起,当我尝试通过SSL建立到我的Web服务器的连接时发生错误: 这是代码: 这只是一个测试项目,这就是为什么我允许和使用不受信任的证书以及代码的原因: 问题答案: Java 7引入了默认情况下启用的SNI支持。我发现某些配置错误的服务器会在SSL握手中发送“无法识别的名称”警告,大多数客户端会忽略此警告… Java除外。如@Bob