我想在我的PC Java应用程序中使用java 9和10中的一些功能,这些应用程序与android应用程序有共同的代码。当我使用jdk 10或jdk 9时,android应用程序正在构建,但它没有启动(它抛出了很多错误)。当我在整个项目中使用JDK8时,一切都工作正常,没有任何错误。当我使用2种不同的jdk手动构建项目时,一切都运行得很好。我试着将安卓应用的targetCompability和sourceCompability设置为JavaVersion.Version_1_7,但是没有帮助。我试着为java9和java10使用不同的jdk,但对这个问题没有帮助。
我想建立安卓应用程序和通用组件与jdk8和其他组件与jdk10。有没有可能强制gradle在不使用bash等外部工具的情况下为特定项目使用不同的jdk?
我的项目结构如下:
build.gradle
common-component(jdk8)/build.gradle
PC(jdk 10)/build.gradle
device-Android(jdk 8)/build.gradle发布于 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的一部分:
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
}
}https://stackoverflow.com/questions/50349011
复制相似问题