Gradle 7 和 Java 11:找不到请求过滤器的兼容工具链

问题描述 投票:0回答:3

从 Gradle 6.7.1 升级到 Gradle 7.4 后,出现以下错误:


FAILURE: Build failed with an exception.

* What went wrong:
Could not determine the dependencies of task ':example-project:compileJava'.
> Failed to query the value of extension 'example-extension' property 'enabled'.
   > Failed to calculate the value of task ':example-project:compileJava' property 'javaCompiler'.
      > No compatible toolchains found for request filter: {languageVersion=11, vendor=any, implementation=vendor-specific} (auto-detect true, auto-download false)
java gradle java-11
3个回答
5
投票

解决方案:

将此添加到

build.gradle

java {
    toolchain {
        implementation = JvmImplementation.J9
    }
}

说明

原来我用的JDK是用J9实现的。

在撰写本文时,Gradle 会忽略使用 J9 实现的 JDK,除非明确设置为使用它。

这似乎是一个错误:

https://github.com/gradle/gradle/issues/16897#issuecomment-823272229

要检查您的 JDK 是否在 J9 中实现,请运行

path/to/your/jdk/bin/java -version

输出将如下所示:

openjdk version "11.0.10" 2021-01-19
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.10+9)
Eclipse OpenJ9 VM AdoptOpenJDK (build openj9-0.24.0, JRE 11 Linux amd64-64-Bit 20210120_821 (JIT enabled, AOT enabled)
OpenJ9   - 345e1b09e
OMR      - 741e94ea8
JCL      - 0a86953833 based on jdk-11.0.10+9)

0
投票

如果您正在尝试 Kotlin Multiplatform,特别是用于 JVM 和 Web 开发,请替换此:

jvm {
        jvmToolchain(8)
        withJava()
        testRuns["test"].executionTask.configure {
            useJUnitPlatform()
        }
    }

这样:

jvm()

帮助我解决了问题。


0
投票

就我而言,java 21 也遇到了同样的问题。我安装了java 17并在JAVA_HOME中显式声明它

© www.soinside.com 2019 - 2024. All rights reserved.