java - 扫描 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 的所有模块吗?
解决方案
您很可能受到[JDK-8211887] jdeps throws NPE 的影响,在分析 javafx.media 时,它引用了一个曾经在 JDK 中不存在的类,您在 JDK 中与 NPE 具有相同的堆栈跟踪ModuleGraphBuilder.java:124
。
此问题已在 Java 12 中解决,建议 Java 11 的解决方法是使用--ignore-missing-deps
选项。我没有看到 Java 11 的反向移植 :(
推荐阅读
- ubuntu - 在 Ubuntu 18.04 中安装 Nvidia 驱动程序
- python - dict中较低的浮点数和整数
- tensorflow - Keras 神经网络“函数调用堆栈:keras_scratch_graph”
- javascript - 如何在 html 中加载 javascript 模块
- xml - XML 命名空间 - 默认声明
- java - 用于 GraphQL API 的 WireMock
- docker - Docker 如何处理本地存储库的不同镜像版本?
- c# - 如何在 Visual Studio 2019 中启用设计视图
- python - 字符串索引超出范围
- css - 为桌面添加媒体查询后,为什么无法加载原始样式?