首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MacOS上使用Gradle与AdoptOpenJDK 11一起使用时不支持版本11

在MacOS上使用Gradle与AdoptOpenJDK 11一起使用时不支持版本11
EN

Stack Overflow用户
提问于 2021-05-04 12:14:14
回答 1查看 1.8K关注 0票数 3

当运行gradle build (对我团队中的其他开发人员有效)时,我得到了:

代码语言:javascript
复制
Execution failed for task ':compileJava'.
> error: release version 11 not supported

这与AdoptOpenJDK11在MacOS上的安装有关。

代码语言:javascript
复制
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)
代码语言:javascript
复制
 ./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_64
代码语言:javascript
复制
echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home

build.grade相关部分

代码语言:javascript
复制
...
java {
    toolchain {
        languageVersion.set(JavaLanguageVersion.of(11))
    }
}
...
代码语言:javascript
复制
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.

  • Running javac,并再次通过命令行从现有的/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

  • Trying

  • 删除了java工具链部分并尝试以这种方式进行构建,然后将java工具链添加回java工具链--构建设置的java工具链以使用java 12 (这导致了gradle)

  • Running gradle -q javaToolchains

  • Removing jdk12 (由gradle自动提供)从~/.gradle/jdks

自动提供jdk12 )。

EN

回答 1

Stack Overflow用户

发布于 2021-07-30 10:52:05

在没有Java的(Linux)机器上,我安装了Java 11,并得到了相同的错误。

我的堆栈跟踪中有趣的部分是:

代码语言:javascript
复制
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)

这部分详细的输出:

代码语言:javascript
复制
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 -停止’来杀死守护进程,为我修复它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67384560

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档