格雷德尔5号和;Java11构建错误:为什么Gradle认为I';我在用Java10吗?

格雷德尔5号和;Java11构建错误:为什么Gradle认为I';我在用Java10吗?,java,ubuntu,gradle,Java,Ubuntu,Gradle,我无法使用Java11和Gradle5构建我的项目。我在尝试生成时收到以下错误: $ gradle clean build > Task :compileJava FAILED FAILURE: Build failed with an exception. * What went wrong: Execution failed for task ':compileJava'. > Could not target platform: 'Java SE 11' using too

我无法使用Java11和Gradle5构建我的项目。我在尝试生成时收到以下错误:

$ gradle clean build
> Task :compileJava FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':compileJava'.
> Could not target platform: 'Java SE 11' using tool chain: 'JDK 10 (1.10)'.
为什么Gradle认为我在使用JDK10?我的
$JAVA_HOME
设置为
/usr/lib/jvm/JAVA-1.11.0-openjdk-amd64/
,这是针对JAVA 11的Linux openjdk构建(见此处)。我使用的是Gradle5,但在使用4.10.2时也出现了此错误

以下是my
build.gradle的相关部分:

apply plugin: 'java'
sourceCompatibility = 11

我也尝试过使用
1.11
来实现源代码兼容性,但同样的错误也失败了。

这个问题是Ubuntu 18独有的。apt
中的“JDK11”实际上是带有后端口JDK11安全更新的JDK10。这是相当令人困惑的,所以有。另见


要解决此问题,必须手动将系统设置为使用实际的JDK11。我做了类似的事情来修复它。

不确定Gradle是否支持Java11。其他人也看到了这个错误。他们的Gradle5发行说明说他们现在正式支持Java11:做了更多的挖掘,我遇到的问题是Ubuntu独有的。Ubuntu实际上提供了伪装成JDK11的JDK10,不知道为什么:不确定为什么有人会认为这是一个好主意。我也遇到了类似的问题,但当gradle使用JAVA_HOME选择正确版本的JDK(11而不是1.8)时,这一问题就解决了。JAVA_HOME可以很容易地按照这一点设置