gpt4 book ai didi

java - Gradle 使用 2 个不同的 JDK

转载 作者:太空狗 更新时间:2023-10-29 13:04:24 29 4
gpt4 key购买 nike

我想在我的 PC java 应用程序中使用 Java 9 和 10 的一些功能,这些应用程序与 android 应用程序具有通用代码。当我使用 jdk 10 或 jdk 9 时,android 应用程序正在构建,但它没有启动(它抛出了很多错误)。当我对整个项目使用 jdk 8 时,一切正常,没有任何错误。当我使用 2 个不同的 jdk 手动构建项目时,一切正常。我尝试为 JavaVersion.Version_1_7 的 android 应用程序设置 targetCompabilitysourceCompability 但它没有帮助。我尝试对 Java 9 和 Java 10 使用不同的 jdk,但这对解决这个问题没有帮助。

我想用 jdk8 构建 android 应用程序和通用组件,用 jdk10 构建其他组件。是否可以在不使用 bash 等外部工具的情况下强制 gradle 为特定项目使用不同的 jdk?

我的项目结构如下:

build.gradle
common-component(jdk8)/build.gradle
PC(jdk 10)/build.gradle
device-Android(jdk 8)/build.gradle

最佳答案

我找到了解决方法。它适用于 gradle 4.7(此版本中添加了 Java 10 支持)。此 hack/解决方法需要使用较低的 JDK(如 Oracle JDK 8 或 OpenJDK)启动项目。我们可以使用更高版本的 JDK 构建一些组件,但是如果我们指定高于 1.8 的 targetcompablility,我们将无法使用 JDK10 构建 JDK 项目然后将其与 JDK8 一起使用。它仅适用于 java 项目,可能不适用于 android 插件和其他 JVM 语言。

PC 应用程序的 build.gradle 的一部分:

project (':pc-client') {
dependencies {
compile project(':net-default')
testcompile JUNIT
}
compileJava {
options.fork = true
options.forkOptions.javaHome = file('/usr/lib/jvm/java-10-oracle')
targetCompatibility = 1.10
sourceCompatibility = 1.10
}

compileTestJava {
options.fork = true
options.forkOptions.javaHome = file('/usr/lib/jvm/java-10-oracle')
targetCompatibility = 1.10
sourceCompatibility = 1.10
}
}

关于java - Gradle 使用 2 个不同的 JDK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50349011/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com