我遇到了和你一样的问题。
这个解决方案(Build failure run "mvn clean install". I just upgraded Big Sur)是删除无用的jre。
我的是给 mvn shell 一个正确的 java_home。
解决方案 - 编辑 mvn bash
第 1 步:检查如何通过 /usr/libexec/java_home 过滤您的目标 java
当我运行命令/usr/libexec/java_home -V
我可以看到 2 个虚拟机
MacBook-Pro:bin charles$ /usr/libexec/java_home -V
Matching Java Virtual Machines (2):
1.8.251.08 (x86_64) "Oracle Corporation" - "Java" /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
1.8.0_251 (x86_64) "Oracle Corporation" - "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Home
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
我的默认返回值/usr/libexec/java_home 是我的 jre 路径,例如
/Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
但我可以更改返回 jdk 路径
/Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Home
如果我运行命令
/usr/libexec/java_home -v1.8.0
第 2 步:更新 mvn 外壳
在 mvn shell 中查找以下行
if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then
#
# Apple JDKs
#
export JAVA_HOME=`/usr/libexec/java_home`
fi
因为我可以使用usr/libexec/java_home -v1.8.0 来确保系统使用jdk,
我将我的外壳更新为
if [ -z "$JAVA_HOME" ] && [ -x "/usr/libexec/java_home" ]; then
#
# Apple JDKs
#
export JAVA_HOME=`/usr/libexec/java_home -v1.8.0`
fi
然后,它起作用了。
如何检查差异
mvn -version
在我更新我的 mvn 之前,我会看到
MacBook-Pro:~ charles$ mvn -version
Apache Maven ........
Maven home: ........
Java version: 1.8.0_251, vendor: Oracle Corporation
Java home: /Library/Internet Plug-Ins/JavaAppletPlugin.plugin/Contents/Home
Default locale: zh_TW, platform encoding: UTF-8
OS name: "mac os x", version: "10.16", arch: "x86_64", family: "mac"
更新我的 mvn 后,我可以看到结果
MacBook-Pro:~ charles$ mvn -version
Apache Maven ........
Maven home: .......
Java version: 1.8.0_251, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_251.jdk/Contents/Home/jre
Default locale: zh_TW, platform encoding: UTF-8
OS name: "mac os x", version: "10.16", arch: "x86_64", family: "mac"
虽然java home显示为jre路径,但jre是jdk内部的子文件夹。没关系。