我正在尝试使用带有gradle 4.2的debian系统上的GA Jdk 9编译java 9模块库。 为此,我只是用modulepath替换了我的类路径:
compileJava {
doFirst {
options.compilerArgs = [
'--module-path', classpath.asPath,
]
classpath = files()
}
}
我在classpath中拥有所有依赖的库,他们进入模块路径并且工作正常,当我尝试编译时,它确实找到了我自己的库。
现在的问题是该项目还使用了javafx。在Java 8中,jfxrt.jar包含在jdk中,据我所知,它位于默认的classpath中。 对于Java 9 i red来说,它现在也已模块化并包含在内。
但是当我尝试编译模块时,编译器告诉我他找不到javafx模块:
.../src/module-info.java:10: error: module not found: javafx.controls
requires javafx.controls;
^
在Windows上,如果没有模块路径中的javafx,它可以正常工作
Jdk包括javafx:http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html
答案 0 :(得分:2)
编译器无法在debian系统上找到javafx模块但在没有
的情况下在Windows上运行正常的原因.../src/module-info.java:10: error: module not found: javafx.controls
requires javafx.controls;
^
可能是 Operating Systems 认证配置中列出的。除了使用@Alan建议的java --list-modules
确认模块列表之外在评论中确保:
对于Linux平台,支持JavaFX需要gtk2 2.18+。
如果您的应用程序可能也在使用这些文档,那么该文档还会说明JavaFX图形和媒体支持详细信息。