当运行gradle build (对我团队中的其他开发人员有效)时,我得到了:
Execution failed for task ':compileJava'.
> error: release version 11 not supported这与AdoptOpenJDK11在MacOS上的安装有关。
java -version
openjdk version "11.0.11" 2021-04-20
OpenJDK Runtime Environment AdoptOpenJDK-11.0.11+9 (build 11.0.11+9)
OpenJDK 64-Bit Server VM AdoptOpenJDK-11.0.11+9 (build 11.0.11+9, mixed mode) ./gradlew -version
------------------------------------------------------------
Gradle 6.8.2
------------------------------------------------------------
Build time: 2021-02-05 12:53:00 UTC
Revision: b9bd4a5c6026ac52f690eaf2829ee26563cad426
Kotlin: 1.4.20
Groovy: 2.5.12
Ant: Apache Ant(TM) version 1.10.9 compiled on September 27 2020
JVM: 11.0.11 (AdoptOpenJDK 11.0.11+9)
OS: Mac OS X 10.14.6 x86_64echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Homebuild.grade相关部分
...
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(11))
}
}
...gradle -q javaToolchains
executing gradlew instead of gradle
+ Options
| Auto-detection: Enabled
| Auto-download: Enabled
+ AdoptOpenJDK 11.0.11
| Location: /Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home
| Language Version: 11
| Vendor: AdoptOpenJDK
| Is JDK: true
| Detected by: Current JVM看来,gradle的java工具链特性引起了问题。
如果java工具链块被完全删除,则项目使用当前JVM构建良好。如果java工具链被设置为使用java 12,则gradle将下载fine.
/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/bin/javac --release 11 HelloWorld.java)
命令行构建javac,以编译一个虚拟的 world文件(例如,/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home/bin/javac --release 11 HelloWorld.java))。
我怀疑重新安装JDK可以解决这个问题,但我很想知道如何进一步调试这个问题,并理解为什么会发生这种情况。
更新
在尝试了几个调试步骤之后,build now工作,原因我不知道。不幸的是,我不知道为什么它一开始就不能工作,并且不能再次重现问题来进一步调试。对于将来可能遇到此问题的人,以下是我在调试过程中所做的一些步骤。其中一个显然解决了这个问题,但我不知道如何解决:
section
gradle -q javaToolchains
~/.gradle/jdks自动提供jdk12 )。
发布于 2021-07-30 10:52:05
在没有Java的(Linux)机器上,我安装了Java 11,并得到了相同的错误。
我的堆栈跟踪中有趣的部分是:
Caused by: java.lang.IllegalArgumentException: error: release version 11 not supported
at jdk.compiler/com.sun.tools.javac.main.Arguments.reportDiag(Arguments.java:891)
at jdk.compiler/com.sun.tools.javac.main.Arguments.handleReleaseOptions(Arguments.java:311)
at jdk.compiler/com.sun.tools.javac.main.Arguments.processArgs(Arguments.java:350)
at jdk.compiler/com.sun.tools.javac.main.Arguments.init(Arguments.java:246)
at jdk.compiler/com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:185)
at jdk.compiler/com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:119)
at jdk.compiler/com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:68)
at org.gradle.api.internal.tasks.compile.JdkTools$DefaultIncrementalAwareCompiler.getTask(JdkTools.java:131)这部分详细的输出:
2021-07-30T10:29:27.874+0000 [INFO] [org.gradle.jvm.toolchain.internal.DefaultToolchainJavaCompiler] Compiling with toolchain '/usr/lib/jvm/java-11-openjdk-11.0.12.0.7-0.el8_4.x86_64'.
2021-07-30T10:29:27.882+0000 [DEBUG] [org.gradle.api.internal.tasks.compile.NormalizingJavaCompiler] Compiler arguments: --release 11 -d /home/tim/git/bma_emubroker/bma-emubroker/build/classes/java/main -h /home/tim/git/bma_emubroker/bma-emubroker/build/generated/sources/headers/java/main -g -sourcepath -proc:none -s /home/tim/git/bma_emubroker/bma-emubroker/build/generated/sources/annotationProcessor/java/main...huge.line.tuncated在试图重构和运行工具链命令时,文件名完成向我指出javac是不可用的!
运行'sudo yum install java-devel-11‘来安装除了JDK之外的SDK,并运行'./gradlew -停止’来杀死守护进程,为我修复它。
https://stackoverflow.com/questions/67384560
复制相似问题