我想在Gradle构建文件中设置所需的Java版本,例如7或8 没有必须指定本地JDK安装的实际路径。
这可能吗?
答案 0 :(得分:15)
TLDR; 谢谢@ franklin-yu“targetCompatibility ='1.7' - >您的用户可以使用8编译并使用7运行。”
请参阅Gradle, "sourceCompatibility" vs "targetCompatibility"?
targetCompatibility = '1.7'
可以解决这个问题。 Java 7
使用sourceCompatibility = '1.7'
作为语言级别
答案 1 :(得分:3)
此功能是just added的Java toolchains到Gradle 6.7:
// build.gradle.kts
plugins {
id("java-library") // or id("application")
}
java {
toolchain {
languageVersion.set(JavaLanguageVersion.of(11))
}
}
为此,Gradle会自动为指定的Java版本下载并使用适当的JDK(默认情况下使用AdoptOpenJDK)。
答案 2 :(得分:1)
您可以尝试以下方法:
java {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
tasks.withType<JavaCompile> {
options.compilerArgs.addAll(arrayOf("--release", "8"))
}
这还将使您符合JDK。您还可以看到以下相关问题:
答案 3 :(得分:0)
在build.gradle
文件中,添加以下两行:
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
targetCompatibility
定义了生成的JVM字节码版本(这是应用程序用户需要的版本)。 sourceCompatibility
定义了允许使用哪些源代码结构(例如,您需要Java 1.8或更高版本才能在源代码中使用lambda表达式)。
答案 4 :(得分:0)
基于 CletusW 的回答。在windows 10下,好像不会自动选择新安装的Java,所以手动检查一下。
apply plugin: 'java'
java.toolchain.languageVersion = JavaLanguageVersion.of(15) // auto install
// check JDK version
if (!System.getProperty("java.home").contains(java.toolchain.languageVersion.get().toString())) {
def msg = ('JDK in this project: ' + System.getProperty('java.home') + '\n' +
'In this project, you should use JDK-' + java.toolchain.languageVersion.get())
throw new GradleException(msg)
}