首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gradle使用2种不同的JDK

Gradle使用2种不同的JDK
EN

Stack Overflow用户
提问于 2018-05-15 19:25:30
回答 1查看 1.7K关注 0票数 3

我想在我的PC Java应用程序中使用java 9和10中的一些功能,这些应用程序与android应用程序有共同的代码。当我使用jdk 10或jdk 9时,android应用程序正在构建,但它没有启动(它抛出了很多错误)。当我在整个项目中使用JDK8时,一切都工作正常,没有任何错误。当我使用2种不同的jdk手动构建项目时,一切都运行得很好。我试着将安卓应用的targetCompabilitysourceCompability设置为JavaVersion.Version_1_7,但是没有帮助。我试着为java9和java10使用不同的jdk,但对这个问题没有帮助。

我想建立安卓应用程序和通用组件与jdk8和其他组件与jdk10。有没有可能强制gradle在不使用bash等外部工具的情况下为特定项目使用不同的jdk?

我的项目结构如下:

代码语言:javascript
复制
build.gradle
common-component(jdk8)/build.gradle
PC(jdk 10)/build.gradle
device-Android(jdk 8)/build.gradle
EN

回答 1

Stack Overflow用户

发布于 2018-05-19 20:27:51

我找到了解决方法。它在gradle 4.7上工作得很好(此版本中添加了对Java 10的支持)。此技巧/变通方法需要使用较低的JDK启动项目,如Oracle JDK8或OpenJDK。我们可以使用更高版本的JDK构建一些组件,但是如果我们指定targetcompablility高于1.8时,我们就不能用JDK10构建JDK项目,然后再用JDK8使用它。它只适用于java项目,可能不适用于android插件和其他JVM语言。

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

代码语言:javascript
复制
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
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50349011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档