当我告诉Gradle运行Java14时,为什么Gradle会尝试使用Java8?

当我告诉Gradle运行Java14时,为什么Gradle会尝试使用Java8?,java,gradle,intellij-idea,Java,Gradle,Intellij Idea,我正在学习如何使用Gradle在IntelliJ中构建项目。我想建立一个涉及OpenJFX的项目。然而,我遇到了这个错误 java.lang.UnsupportedClassVersionError: org/openjfx/gradle/JavaFXPlugin has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Ru

我正在学习如何使用Gradle在IntelliJ中构建项目。我想建立一个涉及OpenJFX的项目。然而,我遇到了这个错误

java.lang.UnsupportedClassVersionError: org/openjfx/gradle/JavaFXPlugin has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
> org/openjfx/gradle/JavaFXPlugin has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
据我所知,Gradle正在使用Java8运行Java11插件。但是,我把它放在
gradle.properties
中:

org.gradle.java.home=/C:/Users/<my user>/.jdks/openjdk-14.0.1
org.gradle.java.home=/C:/Users/.jdks/openjdk-14.0.1
它出现在.jdks中的原因是IntelliJ更早地下载了它。问题是,我告诉Gradle使用Java14,但它给了我一个错误,好像它是由Java8运行的。这里怎么了?

根据
org.gradle.java.home
属性

…指定Gradle构建过程的Java主页。该值可以设置为
jdk
jre
位置,但是,根据您的构建方式,使用jdk更安全。如果未指定设置,则从您的环境(
JAVA\u HOME
或到
JAVA
的路径)派生一个合理的默认值。这不会影响用于启动Gradle客户端VM的Java版本

所以,该值仅用于构建过程(如编译或运行应用程序或测试)。Gradle为此启动了一个子进程,因此执行任务的VM和运行构建脚本的VM可能不同

看起来您使用的是一个用Java11(55.0)编译的Gradle插件,但您的Gradle VM是Java8(52.0),因此它无法加载和使用插件的类。您必须将Java11+用于GradleVM本身


试着像
JAVA\u HOME=C:/Users//.jdks/openjdk-14.0.1 gradlew.bat一样运行您的构建。干净地运行

我发现了如何更改Gradle的JVM。在IntelliJ中,转到首选项(Ctrl-Alt-S);然后构建、执行、部署;然后构建工具>渐变。有一个小菜单,您可以在它识别的JVM之间进行选择。

IntelliJ中的Gradle VM选项在哪里?或者它是我可以在build.gradle或gradle.properties中处理的东西?不确定,但它可能应该尊重build.gradle中的设置。您还可以尝试使用Project的JDK(在Project的设置中配置)→ JDK)。