java - 尝试解析 OpenJFX jmods 时 jdeps 命令失败

标签 java java-11 java-platform-module-system openjfx jdeps

我尝试在使用 OpenJFX 的项目上运行 jdeps 命令,但始终失败。

我正在使用的命令,已尽可能简化:

jdeps --module-path Y:\javafx-jmods-11.0.2 --add-modules javafx.base Test.jar

javafx-jmods-11.0.2 是包含 OpenJFX jmod 文件的目录。

当我运行此命令时,出现错误:

Exception in thread "main" java.lang.module.FindException: Module javafx.base not found
    at java.base/java.lang.module.Resolver.findFail(Resolver.java:877)
    at java.base/java.lang.module.Resolver.resolve(Resolver.java:128)
    at java.base/java.lang.module.Configuration.resolve(Configuration.java:411)
    at java.base/java.lang.module.Configuration.resolve(Configuration.java:245)
    at jdk.jdeps/com.sun.tools.jdeps.JdepsConfiguration.<init>(JdepsConfiguration.java:117)
    at jdk.jdeps/com.sun.tools.jdeps.JdepsConfiguration$Builder.build(JdepsConfiguration.java:563)
    at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.buildConfig(JdepsTask.java:589)
    at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.run(JdepsTask.java:543)
    at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.run(JdepsTask.java:519)
    at jdk.jdeps/com.sun.tools.jdeps.Main.main(Main.java:49)

有人对为什么找不到位于 Y:\javafx-jmods-11.0.2 的 javafx.base 模块有任何想法或建议吗?

最佳答案

通常,当您收到错误时:

java.lang.module.FindException: Module ... not found

这意味着模块路径错误(没有有效路径)或者您提供的路径不包含所需的模块。

正如您在Running javafx sample on JDK 11 with OpenJFX 11 JMODS on Module Path的答案中看到的那样:

As explained here: http://openjdk.java.net/jeps/261#Packaging:-JMOD-files:

JMOD files can be used at compile time and link time, but not at run time. To support them at run time would require, in general, that we be prepared to extract and link native-code libraries on-the-fly.

这意味着您不能将 jmods 与 jdeps 结合使用。

解决方案

在这种情况下,解决方案很简单:使用 JavaFX SDK 中的 jars而不是 jmod:

jdeps --module-path Y:\javafx-sdk-11.0.2\lib --add-modules javafx.base Test.jar

关于java - 尝试解析 OpenJFX jmods 时 jdeps 命令失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54774072/

相关文章:

java - 您如何在模块化 Java 项目中组织测试?

java - 平台模块之间是否允许循环?

java - 使用 Cipher 和 AES 解密产生 208 个解密字节,后跟垃圾

java - 如何在apache Camel中使用文件名日期轮询文件?

java - Jersey REST 服务的响应不包含空字段

java - Openliberty 与 java11 有警告

java - 用Java从SQLite数据库中检索特定数据

java - 使用 java 11 编译后的堆外泄漏

java - 使用 Java 11 和 Spring Boot 调用 java.net.http.HttpClient 的响应不可靠

Java 11 : Implementation of JAXB-API has not been found on module path or classpath