3

我正在尝试在带有 gradle 4.2 的 debian 系统上使用 GA Jdk 9 编译 java 9 模块库。为此,我只是这样做是为了用模块路径替换我的类路径:

compileJava {
    doFirst {
        options.compilerArgs = [
            '--module-path', classpath.asPath,
        ]
        classpath = files()  
    }
}

我在类路径中有我所有的依赖库,它们进入模块路径并且工作正常,当我尝试编译时它确实找到了我自己的所有库。

现在的问题是该项目还使用了 javafx。在 Java 8 中,jfxrt.jar 包含在 jdk 中,据我所知位于默认的类路径中。对于 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

4

1 回答 1

2

编译器在 debian 系统上找不到 javafx 模块但在 Windows 上运行良好的原因

.../src/module-info.java:10: error: module not found: javafx.controls
       requires javafx.controls;
                  ^

可能操作系统认证配置中列出。除了java --list-modules按照@Alan 在评论中的建议确认使用的模块列表之外,请确保:

对于 Linux 平台,需要 gtk2 2.18+ 才能支持 JavaFX。


该文档还说明了 JavaFX 图形和媒体支持的详细信息(如果您的应用程序也可能使用它们)。

于 2017-09-22T17:50:24.287 回答