Java9发布标志在Gradle中似乎不起作用
Gradle正式引用了一句话,用JDK9+构建Java应用程序以在Java 8环境中运行的方法是使用--release 8
标志:
https://docs.gradle.org/current/dsl/org.gradle.api.tasks.compile.CompileOptions.html
我试着这么做,但是编译器仍然会抛出一个错误:
module myapp.main {
^
(use -source 9 or higher to enable modules)
1 error
:compileJava FAILED
根据该文档和许多stackoverflow文章(比如this),当目标为8时,编译器应该忽略模块文件,但事实并非如此。这是为什么
格雷德尔代码:
compileJava {
dependsOn(':compileKotlin')
options.compilerArgs.addAll(['--release', '8'])
doFirst {
println classpath.asPath
options.compilerArgs += [
'--module-path', classpath.asPath,
]
classpath = files()
}
}
# 1 楼答案
这个问题已经有将近一年的历史了,但也许它仍然会有帮助:VGR的答案绝对正确,关于为什么
module-info.java
不会被release 8
标志忽略当谈到如何编译主Java 8类+Java 9
module-info.java
时,自版本1.5.0以来,Gradle模块插件现在支持此功能。更多详细信息可在此处找到: