Gradle使用2种不同的JDK

时间:2018-05-15 11:25:30

标签: java android gradle java-8 java-10

我想在我的PC java应用程序中使用Java 9和10中的一些功能,它们与android app有共同的代码。 当我使用jdk 10或jdk 9安卓应用程序正在构建时,它不会启动(它会抛出很多错误)。当我使用jdk 8进行整个项目时,一切正常,没有任何错误。当我使用2个不同的jdk手动构建项目时,一切正常。 我尝试为activeworkbook.save的Android应用程序设置targetCompabilitysourceCompability,但它没有帮助。我尝试对java 9和java 10使用不同的jdks,但它对这个问题没有帮助。

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

我的项目结构如下:

JavaVersion.Version_1_7

1 个答案:

答案 0 :(得分:1)

我找到了解决方法。它适用于gradle 4.7(此版本中添加了Java 10支持)。此hack / workaround需要使用较低的JDK(如Oracle JDK 8或OpenJDK)启动项目。我们可以使用更高版本的JDK构建一些组件,但我们不能使用JDK10构建JDK项目,如果我们指定targetcompablility高于1.8,则不能将它与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
    }
}