任务“:compileJava”执行失败。 > 无效源版本:1.7

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

我正在使用:

  1. gradle-2.3
  2. javac -版本 = 1.7
  3. jre = 1.7
  4. regedit 显示它指向 1.7。

但是我仍然遇到以下错误

任务“:compileJava”执行失败。 > 无效源版本:1.7

请让我知道如何解决它。

java build.gradle gradle-eclipse
10个回答
23
投票

您可以通过向项目添加“gradle.properties”文件来设置 gradle 用于构建的 JDK 版本。添加以下属性:

org.gradle.java.home = <Path to the JDK you want to use for your project>

我同意之前的答案,你还应该检查 JDK 和 sourceCompatibility 是否匹配。


14
投票

您说您正在使用 Java 7 运行,但您真的确定吗?

因为据我所知,当您使用运行 gradle 的 JVM 不支持的源/目标级别时,就会发生错误。所以如果我猜测的话,我会说 gradle 似乎认为你的 JDK 不支持 Java 7(所以它的 JDK 6 或更低版本)

也许仔细检查一下

a) Gradle 本身使用 JDK 7 运行。如果您使用 STS gradle 工具从 Eclipse 中运行 gradle,它将使用工作区默认 JRE 来运行 gradle。检查它是否至少是 JDK 7。(转到“Windows >> 首选项 >> Java >> 安装的 JRE”。带有“复选标记”的 JRE 是 Gradle 将运行的 JRE)。

b) 如果 Gradle 发现环境变量“JAVA_HOME”,它可能会意外地选择另一个 JDK 来编译内容。因此请仔细检查它是否指向 JDK 6 或更低版本。


5
投票
  • 检查

    $JAVA_HOME
    是否真的指向默认的java

    echo $JAVA_HOME /usr/lib/jvm/java-1.7.0-openjdk
    
  • 检查Java版本

    java -version
    openjdk version "1.8.0_151"
    
  • 如果像上面那样未对齐,要修改

    $JAVA_HOME
    中的
    /etc/profile
    (或者用户主目录中的 .profile/.bashprofile/),请指向

    JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
    
  • 顺便说一句:在

    Centos7
    解决以修复无效版本 1.8


4
投票

如果您已尝试所有解决方案,即 -

  1. 修复 JAVA_HOME 和 Java 运行时
  2. 在首选项中修复 Gradle JVM 版本
  3. 设置 org.gradle.java.home =

您仍然面临问题,然后检查您的 build.gradle 文件并查看

sourceCompatibility = '17'
是否单独存在。如果有请注释掉。


2
投票

在构建 gradle 中尝试以下操作:

apply plugin: 'java'

sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7

如果这不起作用,请提供您的 build.gradle 的内容。


1
投票

在我的例子中,Gradle 在 JRE 上运行,而不是 JDK(错误的 JAVA_HOME 集)。 将我的 JAVA_HOME 指向 JDK 的根目录修复了构建。 (当然,假设你的PATH中有%JAVA_HOME%)

原因

JDK有编译java的javac,而JRE没有。


1
投票

刚刚遇到了 1.8 java 的“bug”

已解决:Findbugs 在方法标题中向我显示了 ü(在 gradle 中不允许)


1
投票

对我来说,我必须将

sourceCompatibility
文件中
build.gradle
属性的值更改为小于或等于当前版本 [我已经 v.16,并将
sourceCompatibility
更改为 v.11]


0
投票

这表明代码正在使用不支持指定源级别的 JDK 版本进行编译。 就我而言,我的系统上配置了 jdk 版本 11,但最初在 gradle 中它是 17。因此,我需要在我的 build.gradle 中将其更改为版本 11。 (注意:- 将 sourceCompatibility 和 targetCompatibility 更改为您系统中的 jdk 版本)

java {
sourceCompatibility(JavaVersion.VERSION_11) // 17 ->11
targetCompatibility(JavaVersion.VERSION_11)  // 17-> 11
}

0
投票

您可以检查

JAVA_HOME
变量和
build.gradle
文件中定义的Java版本。如果两者相同,这个问题就会消失。

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