我尝试在使用 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/