将Mac OS升级到Big Sur(v11.0.1)后,Java无法正常工作

将Mac OS升级到Big Sur(v11.0.1)后,Java无法正常工作,java,macos,Java,Macos,背景: 我用MacBookPro开发java应用程序,效果很好。而在我将mac os从10.x升级到最新版本后,Big Sur,mvn clean package抛出以下异常: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project dq-common: Compilation failure [ERROR] U

背景:

我用MacBookPro开发java应用程序,效果很好。而在我将mac os从10.x升级到最新版本后,
Big Sur
mvn clean package
抛出以下异常:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project dq-common: Compilation failure
[ERROR] Unable to locate the Javac Compiler in:
[ERROR]   /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home/../lib/tools.jar
[ERROR] Please ensure you are using JDK 1.4 or above and
[ERROR] not a JRE (the com.sun.tools.javac.Main class is required).
[ERROR] In most cases you can change the location of your Java
[ERROR] installation by setting the JAVA_HOME environment variable.
java-version

jingxingdeMacBook-Pro:~ kevin$ java -version
java version "1.8.0_271"
Java(TM) SE Runtime Environment (build 1.8.0_271-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.271-b09, mixed mode)
jingxingdeMacBook-Pro:dt-center-valid-4.0 kevin$ 
升级后更改了哪个java

之前:

ingxingdeMacBook-Pro:bin kevin$ which java
/Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Home/bin/java
现在:

cat~/.bash\u配置文件

jingxingdeMacBook-Pro:~ kevin$ cat ~/.bash_profile
export M2_HOME=/usr/local/apache-maven-3.6.3
#Mac OSX 10.5 or later version need this configure
export JAVA_HOME=$(/usr/libexec/java_home)
#export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Home
export MySQL_HOME=/usr/local/mysql
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
export HADOOP_HOME=/Users/kevin/Desktop/Developments/Software/hadoop-3.3.0
PATH=$M2_HOME/bin:$JAVA_HOME/bin:$MySQL_HOME/bin:$HADOOP_HOME/bin:$PATH:.
export PATH
问题:


为什么升级Mac os后更改了哪个java输出,如何修复它。

原因:
~/.bash_配置文件中,
java_HOME=$(/usr/libexec/java_HOME)
,升级后,$(/usr/libexec/java_HOME)链接到
/Library/internetplugins/JavaAppletPlugin.plugin/Contents/Home/bin/java
,它在我的磁盘中不存在,因此缺少jdk

解决方案:我在
/Library/Java/JavaVirtualMachines
中删除jdk并重新安装jdk8,然后将
Java\u HOME
设置为:

/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home

而不是软链接和
source~/.bash_profile
让它工作

我的完整设置:

kevinMacBook-Pro:bin kevin$ cat ~/.bash_profile
export M2_HOME=/usr/local/apache-maven-3.6.3
#Mac OSX 10.5 or later version need this configure
#export JAVA_HOME=$(/usr/libexec/java_home)
#Mac 11 need this configure
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home
export MySQL_HOME=/usr/local/mysql
现在,jdk可以工作了,在mac os升级后,它确实更新了
$(/usr/libexec/java_home)
的软链接,并链接到一个不存在的链接,所以我认为你不需要删除你的jdk,只需更新环境变量重新打开终端来检查jdk是否正确重置。

找到你的jdk位置(我的是
/Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home

  • 在终端
    vim~/.bash_profile
    中(分别以您习惯的任何方式编辑文件)
  • 添加一行导出JDK位置(在我的例子中是
    export JAVA\u HOME=/Library/JAVA/JavaVirtualMachines/jdk1.8.0\u 162.JDK/Contents/HOME
  • 在终端
    source~/.bash\u配置文件中
  • 在终端
    echo$JAVA_HOME
    中,确保环境变量设置正确

  • 可能是到
    java
    的软链接在升级后更改,您可以重新安装并使用sdkmanager在macosx上管理多个java版本。@dkb mac os更改了软链接
    $(/usr/libexec/java\u home)
    升级后,我重新安装了jdk并更新了$JAVA_JHOME,现在它可以工作了。您有以/JAVA或/bin结尾的完整路径吗?我尝试将完整路径放在以JAVA结尾的.bash_配置文件中,结果是一个错误。hi TKP,尝试将JAVA_HOME更新为
    /Library/JAVA/JavaVirtualMachines/jdk1.8.0\u 271.jdk/Contents/HOME
    更新了我的答案。
    kevinMacBook-Pro:bin kevin$ cat ~/.bash_profile
    export M2_HOME=/usr/local/apache-maven-3.6.3
    #Mac OSX 10.5 or later version need this configure
    #export JAVA_HOME=$(/usr/libexec/java_home)
    #Mac 11 need this configure
    export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_271.jdk/Contents/Home
    export MySQL_HOME=/usr/local/mysql