到Java11的渐变迁移
在Gradle构建文件中,fileTree依赖项正在加载一些本地JAR,但编译失败,并出现错误,如“未命名模块中声明了包groovy.text,但模块groovy.text未读取它”。我不确定问题出在哪里,是不是我还需要在compileJava任务中添加一些内容?当前配置用于JavaFx应用程序,如中所述到Java11的渐变迁移,java,gradle,javafx,java-module,java-11,Java,Gradle,Javafx,Java Module,Java 11,在Gradle构建文件中,fileTree依赖项正在加载一些本地JAR,但编译失败,并出现错误,如“未命名模块中声明了包groovy.text,但模块groovy.text未读取它”。我不确定问题出在哪里,是不是我还需要在compileJava任务中添加一些内容?当前配置用于JavaFx应用程序,如中所述 经过更多的研究,我发现JAR是通过类路径传递给编译器的。但编译失败,出现多个错误,如“未命名模块中声明了包groovy.text,但模块groovy.text未读取它”。这可能是什么?为什么要
经过更多的研究,我发现JAR是通过类路径传递给编译器的。但编译失败,出现多个错误,如“未命名模块中声明了包groovy.text,但模块groovy.text未读取它”。这可能是什么?为什么要将lib添加到src文件夹(
src/main/lib
)?您可以尝试将它们移动到lib
,在src
之外吗?我现在移动了文件夹并修复了build.gradle,但错误保持不变。您有模块信息.java
文件吗?然后您需要添加类似于requires groovy.text
@dprutean的东西理想的解决方案是将这些jar添加到modulepath,但是如果您可能有意将它们放在类路径上,那么可以使用VM args--add reads groovy.text=ALL-UNNAMED
临时解决这个问题。
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.google.gradle:osdetector-gradle-plugin:1.6.0'
}
}
apply plugin: 'application'
apply plugin: 'com.google.osdetector'
ext.platform = osdetector.os == 'osx' ? 'mac' : osdetector.os == 'windows' ? 'win' : osdetector.os
repositories {
mavenCentral()
flatDir {
dirs 'src/main/lib'
}
}
dependencies {
compile fileTree(dir: 'src/main/lib', include: ['*.jar'])
compile "org.openjfx:javafx-base:11:$platform"
compile "org.openjfx:javafx-graphics:11:$platform"
compile "org.openjfx:javafx-controls:11:$platform"
compile "org.openjfx:javafx-web:11:$platform"
}
compileJava {
doFirst {
options.compilerArgs = [
'--module-path', classpath.asPath,
'--add-modules', 'javafx.controls',
'--add-modules', 'javafx.graphics',
'--add-modules', 'javafx.web'
]
}
}
run {
doFirst {
jvmArgs = [
'--module-path', classpath.asPath,
'--add-modules', 'javafx.controls'
]
}
}
mainClassName = 'HelloFX'