我尝试在Jenkins上为我们的JavaFX应用程序设置管道。一切正常,但在启动单元测试时遇到了一个问题。每个测试都以某种方式使用了JavaFX类,失败的根本原因如下:
Caused by: java.lang.IllegalAccessException: class net.bytebuddy.description.annotation.AnnotationDescription$ForLoadedAnnotation cannot access interface com.sun.javafx.beans.IDProperty (in module javafx.base) because module javafx.base does not export com.sun.javafx.beans to unnamed module @7ee955a8
我尝试了以下方法:
- 设置环境变量JAVA_OPTS
JAVA_OPTS=--module-path /path/to/javafx --add-modules javafx.controls,javafx.base
- 在gradle中添加编译器选项
tasks.withType(Test).configureEach {
doFirst {
options.compilerArgs += [
'--module-path', '/path/to/javafx',
'--add-modules', 'javafx.controls,javafx.base',
]
classpath = files()
}
}
但没有任何变化。我使用的是阿苏尔编译的OpenJDK。我使用的是带有JavaFX(JDKFX)的版本,但我无法运行此测试(没有任何JavaFX引用的测试运行良好)。我还可以编译应用程序。您有任何建议吗?
1条答案
按热度按时间eiee3dmh1#
问题是,正如评论中提到的,它不应该添加到compilerArgs,而应该添加到运行时,此外,我将其放置在错误的build.gradle文件中。解决所有问题的最终配置是将以下内容添加到主build.gradle文件: