首页 > 解决方案 > 扫描 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 Boot 项目的自定义 JRE 的所有模块吗?

标签: javajava-11java-module

解决方案


您很可能受到[JDK-8211887] jdeps throws NPE 的影响,在分析 javafx.media 时,它引用了一个曾经在 JDK 中不存在的类,您在 JDK 中与 NPE 具有相同的堆栈跟踪ModuleGraphBuilder.java:124

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


推荐阅读