问题标签 [jdeps]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
343 浏览

java - 为什么 jdeps 会发出有关拆分包的警告?

我有一个简单的非模块化 jar 文件main.jar,它依赖于libA.jarlibB.jar. 这三个 jar 文件都驻留在当前目录中。我希望 jdeps(版本 15.0.1)module-info.javamain.jar. 这是我的 shell 命令(在 Windows 上使用 cmd.exe):

此命令确实会生成所需的module-info.java文件,但也会发出以下警告:

该软件包org.example.main仅存在于main.jar- 所以我认为不应该有任何警告。

关于为什么 jdeps 确实在这里看到问题的任何提示?

0 投票
1 回答
422 浏览

java - 使用 jdeps 找不到模块 commons.math3

我正在使用 JDEPS 列出库的依赖关系以确保它们得到满足。

我最近从 Apache POI v4.1.1 升级到 v5.0.0,其中添加了 JigSaw 模块

以前,以下命令将输出依赖项:

但现在使用 v5.0.0,我得到:

我有commons-math3图书馆,但即使我通过-classpath参数包含它,我仍然遇到同样的问题。

0 投票
0 回答
284 浏览

java - jdeps 因并发执行异常而失败

我正在尝试使用 Jdeps 为我的 spring boot jar 获取依赖项。我正在运行以下命令:-

但上述命令失败并出现以下错误:

错误原因:-

当我运行这个 POM.xml 条目时,上面的 Jdeps 命令工作正常:-

但是当我添加 Spring-boot Data JPA 依赖项时,它正在破坏:-

我想要逗号分隔格式的依赖。

有人可以告诉我为什么在添加 Spring-Boot Data JPA 时,Jdeps 会崩溃。

我为此使用 JDK 15。

0 投票
1 回答
40 浏览

java - 如何从 gradle 获取给定 java 类的所有依赖项

如果它们包含一些特定的库,我目前必须检查几个 java 类。我正在寻找类的直接依赖和传递依赖。

我可以配置 gradle 来做到这一点吗?我已经看到,那个 gradle 可以为整个项目和模块生成一个依赖树,但不幸的是不能为特定的 java-class

谢谢你的帮助!

0 投票
0 回答
344 浏览

java - springboot jar 上的 Java jdeps 命令为 Tomcat 依赖项引发错误

我正在尝试为我的 springboot 应用程序创建一个自定义的精简 JRE

我的 pom.xml:

只跑

给出了一堆未找到的 java 依赖项

由于 jdep 似乎不适用于 springboot JARS 我从这里使用这个脚本:https ://linuxtut.com/how-to-make-spring-boot-docker-image-smaller-51713/

我安装了 java 16,但是当我运行 ./get-springboot-module.sh target/POSapi-1.jar 11

我得到以下异常:

所以现在我被卡住了,有没有人有过这个错误的经验?似乎 jdep 找不到 tomcat 依赖项?

0 投票
0 回答
24 浏览

gradle - 在 Gradle 中调试命令行调用

概括

由于某种原因,我们的 Gradle 管道不再有效。由于项目设置没有改变,甚至以前的功能提交现在也遇到了同样的问题,很可能外部依赖关系已经改变。

错误的来源已缩小到jdepsGradle 任务中的调用。有问题的段落如下所示:

这段代码已经工作了多年,但是现在jdeps返回错误代码2,因此构建过程会因异常而取消。

问题

我不想用这个问题来解决我们的构建问题,但我在调试这段代码时遇到了麻烦。错误代码2jdeps记录(据我所知),映射了正确的 Java 环境,并通过 shell 调用具有相应参数的完全相同的命令导致成功调用并按预期返回依赖项。在这种情况下,我无法jdeps在 Gradle 日志中查看调用返回的确切输出,就像我jdeps从带有错误参数的 shell 调用时那样。

jdeps调用using时如何显示此调用的整个控制台输出commandLine

已尝试以下参数但未成功:

  • -d在 Gradle 实例上
  • --full-stacktrace在 Gradle 实例上
  • --scan在 Gradle 实例上
  • -verbose作为jdeps参数
  • 尝试将调用封装在批处理文件中,并通过commandLine类似的结果调用该调用

任何建议表示赞赏。

0 投票
0 回答
148 浏览

java - 在 OpenJDK 11.0.11 (JDK-8214213) 中更改了 jdeps 行为

概括

11.0.10-在一些机器从 JDK 更新到JDK之后,我们的构建管道已经中断11.0.11+。这是由于jdeps行为改变而发生的。经过一些研究,它变得很明显,这可能是由于引入的变化JDK-8214213

假设我们正在检索 的依赖项sentry-1.7.25.jar,那么我们对jdepsvia CLI 的使用如下:

生成的依赖列表如下所示:

11.0.10及以下

11.0.11以上


为了在 OpenJDK 上解决这个问题11.0.11+,需要--ignore-missing-deps在调用jdeps. 如果完成,则输出再次看起来正确:

问题

因此,我可以使用 JDK 产生与使用 JDK 相同的jdeps输出。话虽如此,此输出用于创建自定义运行时,并且在描述中明确说明:11.0.11+11.0.10-JDK-8214213

请注意,在将--ignore-missing-deps选项用于非模块化应用程序时,将使用 jdeps 输出的模块列表创建自定义图像。在自定义映像上运行的此类应用程序可能会在抑制缺失依赖错误时在运行时失败。

根据我的理解,这意味着如果涉及传递依赖项,其中依赖项的依赖项需要任何顶级依赖项都不需要的运行时模块,那么这可能导致自定义运行时无法运行应用程序,因为传递依赖无法解决。换句话说,如果我的应用程序需要依赖项A,这需要依赖项B和模块C,但依赖项B也需要模块D,那么我的应用程序就有遇到运行时错误的风险,因为我的自定义运行时没有提供模块D

我现在的问题是这个,因为我无法从文档中得出它:

如果使用 JDK 11.0.11+,我只能获得相同的依赖项列表输出--ignore-missing-deps。是不是意味着...

  • ...jdeps能够在 之前解决传递依赖11.0.11,但不能在上述版本之上再这样做,例如因为依赖分析在内部以不同的方式完成jdeps
  • ...jdeps就好像它在默认情况下使用--ignore-missing-deps之前一样11.0.11,因此如果默认更改,jdeps现在会在11.0.11+?
  • ……还有什么事吗?

生成的依赖列表可能是相同的,只是因为有很多库,所以大多数模块都以任何一种方式使用。但是我试图确定,是否

行为完全相同,或者--ignore-missing-deps在将新库添加到我们的项目时是否会引入新风险,因为它们可能在某些时候需要一个不属于当前jdeps-list 的模块。

请记住,对我来说,这是对 OpenJDK 细节的深入探讨,所以如果我对这些场景的理解存在错误的术语或问题,请随时指出并纠正它们。

0 投票
1 回答
86 浏览

java - 如何判断包属于哪个模块?

给定一些包foo.bar,我如何找到它属于哪个模块?

例如,包java.util属于模块java.base。我可以通过输入jdeps -m java.base并通过长输出来验证它。然而,这假设我的先验知识是 packagejava.util属于 module java.base

如何验证包属于哪个模块?

0 投票
1 回答
152 浏览

java - javax.net.ssl.SSLHandshakeException 在使用自定义 java 运行时映像时发生,但并非没有

我有这个类,它只发送一个 http post 请求:

我有这个.bat文件,它为它构建了我的 jar 和 java 运行时映像,并使用这个自定义运行时映像来运行我的 jar:

如果我使用自定义 jre 运行应用程序,则会收到错误消息:

但是,如果我在没有自定义 jre 的情况下以正常方式运行应用程序,则不会收到此错误。这个问题是不是因为自定义 jre 没有正确构建,我的自定义 jre 中是否缺少某些模块?或者这是一个完全不同的问题?如果缺少某些模块,我应该怎么做才能包含它们?哪一个?我怎么知道?我只添加了输出的模块jdeps

这是我得到的整个堆栈跟踪:

这是我添加的用于制作运行时的模块:java.base,因为这是从 jdeps 输出的。

0 投票
0 回答
99 浏览

java - 在模块中使用 iText 7

我正在尝试 Java 16 中的模块化项目,我想测试 iText7。据我所知,iText7 的 jars 是针对 Java8 编译的。所以我必须用 jdeps aso 更新 iText7 的 jar 文件。但它不起作用。有没有更简单的方法在 Java > 8 项目中使用 iText7?谢谢!