MacBook Air M2编译jextract失败:release version 20不支持求助
解决MacBook Air M2上编译jextract时"release version 20 not supported"错误
问题根源
Gradle未正确调用你指定的Zulu JDK 20,而是使用了系统中版本更低的javac,导致无法支持JDK20的编译版本参数。
解决方案
1. 确认系统默认JDK版本
先检查当前终端使用的javac版本:
javac -version
如果输出不是javac 20,执行以下命令查看所有已安装JDK,确认Zulu JDK20的路径:
/usr/libexec/java_home -V
2. 强制Gradle使用指定JDK
方法一:添加项目级配置
在jextract项目根目录创建gradle.properties文件,写入:
org.gradle.java.home=/Library/Java/JavaVirtualMachines/zulu-20.jdk/Contents/Home
之后重新执行编译命令。
方法二:命令行直接指定
在Gradle命令中添加-Dorg.gradle.java.home参数:
./gradlew -Dorg.gradle.java.home=/Library/Java/JavaVirtualMachines/zulu-20.jdk/Contents/Home -Pjdk20_home=/Library/Java/JavaVirtualMachines/zulu-20.jdk/Contents/Home -Pllvm_home=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/ clean verify
方法三:临时设置环境变量
在终端执行以下命令,再运行编译:
export GRADLE_OPTS="-Dorg.gradle.java.home=/Library/Java/JavaVirtualMachines/zulu-20.jdk/Contents/Home"
3. 适配M2架构的LLVM路径验证
如果Xcode自带LLVM路径存在问题,用Homebrew安装arm64适配版LLVM:
brew install llvm
然后将-Pllvm_home参数替换为Homebrew的安装路径:
-Pllvm_home=/opt/homebrew/opt/llvm/
4. 切换到适配JDK17的jextract分支
若坚持使用Zulu JDK17,先切换到对应分支:
git checkout jdk17u
再调整编译命令:
./gradlew -Dorg.gradle.java.home=/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home -Pjdk17_home=/Library/Java/JavaVirtualMachines/zulu-17.jdk/Contents/Home -Pllvm_home=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/ clean verify
5. 彻底清理缓存
每次尝试前执行以下命令清除残留缓存:
rm -rf build/ .gradle/ rm -rf ~/.gradle/caches/modules-2/files-2.1/org.openjdk.jextract/ git reset --hard
内容的提问来源于stack exchange,提问作者peterk
相关产品推荐
相关产品推荐

