问题标签 [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 投票
3 回答
5623 浏览

java - 如何在 Java 11 中使用非模块化依赖项打包应用程序

我开发并分发了一个使用 Apache Batik 和 JavaCV 的 Java Swing 应用程序。我已经通过 java 1.6、7 和 8 对其进行了更新。macOS、Windows 和 Linux 的安装程序是使用 Javapackager 构建的。Java 8 在 19 年 1 月终止支持,我找不到在新 LTS 版本 Java 11 上打包和分发的解决方案。

JavaCV 或 Batik 都不会生成模块化 jar,但我设法将它们重新打包到可以在 Java 11 上编译和生成可运行 jar 的程度,应用程序工作正常,但我无法将其打包以进行分发。我计划下降到 Java 10 以使用 javapackager 并从那里捆绑 11 运行时,但它使用 jlink 生成自定义运行时,jlink 失败,因为 JavaCV 和 Batik 不是模块化的。由于 Batik 和 JavaCV 中的引用不满意,jdeps 不会生成 module-info.class 来修补并使它们模块化,即使我的应用程序在没有它们的情况下也能正常工作。

结果,我将不得不将代码库保留在 Java 8 中,并且即使不再受支持,也要发布它。

我知道有一个调用来创建 javapackager 的替代品,但直到 Java 8 被弃用之后才会出现。而且我仍然需要 Batik 和 JavaCV 项目来重构和构建模块化 jar 以生成自定义运行时。

谁能提供任何其他解决方案?我错过了什么吗?谢谢。

0 投票
2 回答
1479 浏览

java - jdeps 命令与 `--multi-release` 选项一起使用失败

我运行了以下命令,但我得到了同样的错误:

上面的命令有什么问题?

遵循有关我的环境的其他命令:

与 相同的错误java-11-oracle

0 投票
1 回答
2522 浏览

java - 如何使用 jdeps 分析 fat jar(spring-boot)的依赖关系?

胖罐子效果很好,我只想使用裁剪后的 JRE。
我尝试了以下操作:

我得到的结果是:

如果我用它来制作我自己的 JRE using jlink --no-header-files --no-man-pages --compress=2 --strip-debug --add-modules java.base,java.logging --output cropped-jre,那么新的 JRE 就无法满足这个胖罐子。
实际上,它需要其他依赖项以及例如“java.sql”。
fat jar的树状图是:

如何使用 jdeps 获得所有这些依赖项?

当你试图避免这种情况时,你可能会尝试解压缩你的 fat jar 并将它的 lib 指向 jdeps,但是你会遇到另一个错误 - https://bugs.openjdk.java.net/browse/JDK-8207162,这会阻止您在 jdeps 中使用多版本 jar(例如 log4j)。最后,我尝试了每个依赖项以找到答案: jlink --no-header-files --no-man-pages --compress=2 --strip-debug --add-modules java.base,java.logging,java。 management,java.sql,java.transaction.xa,java.xml,java.naming,java.desktop,java.security.jgss,java.instrument,jdk.unsupported --output java-base 这将生成一个裁剪的 JRE(只有 40MB,基于 openJDK11)可以运行你的 spring-boot 应用程序(使用 Tomcat/Thymeleaf/Jedis)。

0 投票
1 回答
1485 浏览

java - jdeps 在 fat jar 中使用 Java 11 和 JavaFX 失败

我正在尝试使用 jdeps(和 jlink)来部署使用 JavaFX 11 的 Java 11 应用程序。在我的 Java IDE 中运行良好。但是当我使用 jdep 时,我得到以下错误,这表明找不到某些模块或包。我被困住了。谢谢你的帮助。

jdeps --list-deps --module-path /Users/…/target:/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home/jmods:/Users/…/javafx-sdk-11.0。 2/lib --add-modules 链编码器、javafx.fxml、javafx.base、javafx.controls、javafx.graphics、javafx.web /Users/…/target/chaincoder4-1.0.jar

模块信息.java 是

模块链编码器{

}

pom.xml 是

0 投票
1 回答
1003 浏览

java - 尝试解析 OpenJFX jmods 时 jdeps 命令失败

我正在尝试在使用 OpenJFX 的项目上运行 jdeps 命令,但它一直失败。

我正在使用的命令,尽可能简化:

javafx-jmods-11.0.2 是一个包含 OpenJFX jmod 文件的目录。

当我运行这个命令时,我得到了错误:

有没有人有任何想法或建议为什么找不到位于 Y:\javafx-jmods-11.0.2 的 javafx.base 模块?

0 投票
1 回答
614 浏览

java - jdeps 在 sprinboot 项目上失败

我有 springboot web 应用程序,我正在尝试在这个项目上运行 jdeps(使用 java11),它失败并出现错误。

jdeps 命令:jdeps --print-module-deps --multi-release 9 -cp ./*.jar .

例外:

0 投票
1 回答
59 浏览

gradle - 如何在 kotlin+gradle 项目中执行架构规则?

我想在我的 kotlin/gradle 项目中自动执行某些架构规则。一个例子是:没有从模型包到 xyz 包的调用。或者没有从包 a、b 和 c 调用 ACL 层。

有没有办法在每次构建/部署时自动执行这些规则?

0 投票
1 回答
944 浏览

java - 无法使用 Java 11 通过 jdeps 为遗留 jar 生成模块信息

我需要使用以下命令为名为 selenium-chrome-driver-3.141.59.jar的遗留 jar 生成模块信息文件:

但我得到的结果是:

我试过这里这里提到的:

然后我得到同样的错误。

作为替代方法,我尝试添加单独的模块,例如:

我看到了这个:

而且无论我要添加哪个模块,问题始终是:

使用更高的级别也对我没有帮助:

错误将是:

所以,我能做的最后一件事是手动创建模块信息并使用exports

更新:

通过-cp选项查找类:

我已经添加到selenium-chrome-driver-3.141.59.jar,和.selenium-api-3.141.59.jarguava-25.0-jre.jarselenium-remote-driver-3.141.59.jar

0 投票
1 回答
413 浏览

java - 如何获取 Java 类的真正模块依赖?

我的 JDK 版本是 OpenJDK 11。我的类文件是jmx.Main.class

这是我的代码。

它在 IDE 中运行时运行良好。我想使用自定义 jre。然后我用它jdeps来分析依赖关系。结果是:

所以我认为java.baseandjava.management是依赖模块。

然后我jlink用来生成我的自定义 jre。

在使用我的自定义 jre 之前,我已经在 cmd 窗口中运行了我的代码。它工作正常。

然后我在我的 jre 中运行代码。代码无法运行,出现错误:

所以我认为原因是缺少一些依赖模块。我运行jlink以生成整个模块 jre。当我使用整个模块 jre 时,代码再次正确运行。

如何获得真正的依赖模块?还是JDK的错误?

0 投票
1 回答
135 浏览

java - jdeps 命令不适用于 -p 属性

当我执行这个命令时:

很好,它会打印所有信息。但是当我用 替换--module-path-p,它会引发异常:

但是根据java我们可以替换--module-path-p

--module-path 到 -p

那么为什么会抛出异常呢?