我正在尝试在使用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:模块...未找到


这表示模块路径错误(没有有效路径),或者您提供的路径不包含必需的模块。

如您在Running javafx sample on JDK 11 with OpenJFX 11 JMODS on Module Path的答案中所见:


  如此处所述:http://openjdk.java.net/jeps/261#Packaging:-JMOD-files
  
  JMOD文件可以在编译时和链接时使用,但不能在运行时使用。为了在运行时支持它们,通常需要准备好即时提取和链接本机代码库。


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



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

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/

10-13 05:38