【问题标题】:Java 9 gradle cant find javafx moduleJava 9 gradle 找不到 javafx 模块
【发布时间】:2018-03-04 08:18:50
【问题描述】:

我正在尝试在带有 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,它可以正常工作

包含 javafx 的 Jdk:http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html

【问题讨论】:

  • Debian 版本可能没有 JavaFX 模块。 java --list-modules 将列出运行时映像中的模块,是否列出了 javafx.* 模块?
  • 谢谢,我的 --list-modules 不包含 javafx.* 模块。看来我没有下载正确的jdk。我从jdk.java.net/9 获得了我的 Jdk。这个 Jdk 似乎不包含 javafx 模块。来自 oracle 站点的确实包含它,现在它正在工作

标签: java gradle javafx java-9 javafx-9


【解决方案1】:

编译器在 debian 系统上找不到 javafx 模块,但在没有 Windows 的情况下可以正常工作的原因

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

可能是 Operating Systems 认证配置中列出的。 除了按照 @Alan 在 cmets 中的建议使用 java --list-modules 确认模块列表之外,请确保确定:

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


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

【讨论】:

  • 我不知道如果你只是尝试编译一些东西而不执行它是否重要。原来我得到了开源 jdk 构建,它们不包括 javafx
  • 只是尝试编译一些东西而不是执行它这很重要,因为如果代码没有编译它就不会被适当地转换成可执行的形式。另外@Ben欢迎您使用您最终下载并工作的构建的正确链接来更新答案。这将使答案更有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-17
  • 2020-02-21
  • 2018-06-22
  • 1970-01-01
  • 2018-10-25
相关资源
最近更新 更多