在扫描 Spring Boot .jar文件时获取 Java 11 jdeps 上的 NPE 工具



当我尝试查找需要在自定义 JRE 中链接的 Java 模块时,我确实从jdeps工具中获得了 NPE:

marc$ jdeps --module-path $JAVA_HOME/jmods --print-module-deps --multi-release 11 target/blha/jx1-0.0.1-SNAPSHOT/BOOT-INF/lib/*.jar
Exception in thread "main" java.lang.NullPointerException
at jdk.jdeps/com.sun.tools.jdeps.ModuleGraphBuilder.requiresTransitive(ModuleGraphBuilder.java:124)
at jdk.jdeps/com.sun.tools.jdeps.ModuleGraphBuilder.buildGraph(ModuleGraphBuilder.java:110)
at jdk.jdeps/com.sun.tools.jdeps.ModuleGraphBuilder.reduced(ModuleGraphBuilder.java:65)
at jdk.jdeps/com.sun.tools.jdeps.ModuleExportsAnalyzer.modules(ModuleExportsAnalyzer.java:124)
at jdk.jdeps/com.sun.tools.jdeps.ModuleExportsAnalyzer.run(ModuleExportsAnalyzer.java:97)
at jdk.jdeps/com.sun.tools.jdeps.JdepsTask$ListModuleDeps.run(JdepsTask.java:1023)
at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.run(JdepsTask.java:560)
at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.run(JdepsTask.java:519)
at jdk.jdeps/com.sun.tools.jdeps.Main.main(Main.java:49)

知道如何找到我需要链接到此 Spring 启动项目的自定义 JRE 的所有模块吗?

您最有可能受到 [JDK-8211887] 的影响 jdeps 在分析 javafx.media 时抛出 NPE,该媒体引用了曾经存在于 JDK 中的类,您与 NPE 在ModuleGraphBuilder.java:124处具有相同的堆栈跟踪。

此问题已在 Java 12 中得到解决,Java 11 的建议解决方法是使用--ignore-missing-deps选项。我没有看到向后移植到 Java 11 :(

最新更新