我想在我的PC java应用程序中使用Java 9和10中的一些功能,它们与android app有共同的代码。
当我使用jdk 10或jdk 9安卓应用程序正在构建时,它不会启动(它会抛出很多错误)。当我使用jdk 8进行整个项目时,一切正常,没有任何错误。当我使用2个不同的jdk手动构建项目时,一切正常。
我尝试为activeworkbook.save
的Android应用程序设置targetCompability
和sourceCompability
,但它没有帮助。我尝试对java 9和java 10使用不同的jdks,但它对这个问题没有帮助。
我想用jdk8和其他组件用jdk10构建android应用程序和通用组件。是否可以强制gradle在不使用bash等外部工具的情况下为特定项目使用不同的jdk?
我的项目结构如下:
JavaVersion.Version_1_7
答案 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
}
}