我使用JDEPS列出库的依赖关系,以确保它们得到满足。
我最近从ApachePOIv4.1.1升级到了v5.0.0,其中JigSaw modules were added。
以前,以下命令将输出依赖项:
jdeps --multi-release 11 poi-scratchpad-4.1.1.jar但是现在使用v5.0.0,我得到了:
jdeps.exe --multi-release 11 poi-scratchpad-5.0.0.jar
Exception in thread "main" java.lang.module.FindException: Module commons.math3 not found, required by org.apache.poi.scratchpad
at java.base/java.lang.module.Resolver.findFail(Resolver.java:894)
at java.base/java.lang.module.Resolver.resolve(Resolver.java:191)
at java.base/java.lang.module.Resolver.resolve(Resolver.java:140)
at java.base/java.lang.module.Configuration.resolve(Configuration.java:422)
at java.base/java.lang.module.Configuration.resolve(Configuration.java:256)
at jdk.jdeps/com.sun.tools.jdeps.JdepsConfiguration$Builder.build(JdepsConfiguration.java:564)
at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.buildConfig(JdepsTask.java:603)
at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.run(JdepsTask.java:557)
at jdk.jdeps/com.sun.tools.jdeps.JdepsTask.run(JdepsTask.java:533)
at jdk.jdeps/com.sun.tools.jdeps.Main.main(Main.java:49)我有commons-math3库,但是即使当我通过-classpath参数包含它时,我仍然得到相同的问题。
发布于 2021-01-22 00:05:03
对于要为commons-math3-3.6.1.jar解析的模块,应该可以使用--module-path而不是-classpath选项。
实际上,为了简单起见,您可以将所有依赖项详细地放入一个文件夹中,然后将其视为模块路径,如下所示:

在上图中,我创建了一个dependencies文件夹,其中包含poi-scratchpad的所有依赖库的.jar。在同一目录中进一步执行以下命令可以正常工作:
jdeps --module-path dependencies poi-scratchpad-5.0.0.jar https://stackoverflow.com/questions/65831117
复制相似问题