Java 在根项目上找不到参数的方法sourceCompatibility()

Java 在根项目上找不到参数的方法sourceCompatibility(),java,gradle,javacompiler,Java,Gradle,Javacompiler,我想为用Gradle构建的a定义源和目标兼容性。因此,我添加以下块 当我组装项目时,会出现以下错误: 在根项目上找不到参数[1.7]的方法sourceCompatibility() 相关的 您试图传递错误类型的值sourceCompatibility和targetCompatibility应该是字符串,但是JavaVersion。VERSION\u 1\u 7不是字符串,只是使用重写的toString()方法枚举。这就是为什么在异常文本中有参数[1.7]的原因。试着像这样做: compil

我想为用Gradle构建的a定义源和目标兼容性。因此,我添加以下块

当我组装项目时,会出现以下错误:

在根项目上找不到参数[1.7]的方法sourceCompatibility()


相关的

您试图传递错误类型的值
sourceCompatibility
targetCompatibility
应该是字符串,但是
JavaVersion。VERSION\u 1\u 7
不是字符串,只是使用重写的
toString()
方法枚举。这就是为什么在异常文本中有参数[1.7]的原因。试着像这样做:

compileJava {
    sourceCompatibility JavaVersion.VERSION_1_7.toString()
    targetCompatibility JavaVersion.VERSION_1_7.toString()
}

或者将其从
compileJava
闭包中移出到脚本正文中,就像它通常使用的那样,例如:

sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7

... 或者只写“1.7”,而不使用
JavaVersion
枚举。@Stanislav您最后的建议
sourceCompatibility JavaVersion.VERSION\u 1\u 7..
对我不起作用,并产生与以前相同的错误。第一条和第二条建议有效,尽管前者在IntelliJ 14.1.5中产生了检查警告<代码>。。。无法应用于(字符串)。所以,我可能会使用第二种方法。@JJD奇怪的是,它对我来说是有效的,gradle 2.6和Intellij14.1.3,如果要将它排除在任何任务之外的话closure@JJD我的错误是,由于我们将属性设置为非配置闭包,我们必须提供
=
,所以我更新了答案。我刚刚下载了你的项目并添加到构建脚本root
sourceCompatibility=JavaVersion.VERSION\u 1\u 7
targetCompatibility=JavaVersion.VERSION\u 1\u 7
,它是用gradlew成功构建的。@JJD你可以忽略它,这个想法似乎不知道,它们被用于其他插件中。为了检查gradle java plugin是否接受该选项,请按如下方式修改该选项,使其值等于
ErrorVersion
字符串。您的构建将失败,因为gradle无法确定java版本。如果您想阻止idea在这个属性下面加下划线,只需修改一些任务,在配置阶段将这些值作为附加信息打印给用户。
compileJava {
    sourceCompatibility "$JavaVersion.VERSION_1_7"
    targetCompatibility "$JavaVersion.VERSION_1_7"
}
sourceCompatibility = JavaVersion.VERSION_1_7
targetCompatibility = JavaVersion.VERSION_1_7