Java 9 : Generating a runtime image with JLink using 3rd party jars

标签 java java-9 jlink

我想创建一个包含第 3 方 jar 的 Java 9 运行时镜像。我制作了一个简单的 Java 项目(我们称之为 Example)来调用实用程序 jar(我们称之为 ExampleUtil.jar)。 Example 包含 src 目录中的 module-info.java 并在 Eclipse 中运行良好(我添加了 ExampleUtil.jar 作为模块依赖)。如果我打电话:

jlink -v
    --module-path "C:\Program Files\Java\jdk-9.0.4\jmods";C:\Temp
    --add-modules com.example.steven
    --output C:\Temp\image.steven
    --launcher launch=com.example.steven/com.example.steven`

...我收到错误消息:

Error: module-info.class not found for ExampleUtil module

有没有办法使用不是模块的 jar 来创建运行时镜像?谢谢。

最佳答案

不,jlink 要求所有包含的模块都是显式,这意味着它们需要有一个模块描述符。这是the documentation说到jlink的模块路径:

The path where the jlink tool discovers observable modules. These modules can be modular JAR files, JMOD files, or exploded modules.

请注意没有“普通 JAR”(即没有描述符的 JAR)。

不过,您可以将现有的第三方 JAR 升级为模块化 JAR(需要一些努力)。步骤是:

或者,您可以使用类似 ModiTect 的工具它会为您做这些事情。

关于Java 9 : Generating a runtime image with JLink using 3rd party jars,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48408454/

相关文章:

java - 如何按字典顺序对二维数组进行排序?

java - 使用 ModiTect 生成模块信息并创建运行时镜像

java - DeferredResult 能否在 Spring MVC 4 中与 @ModelAttribute 一起使用?

java - quartz 调度器/多个(非集群)调度器实例

java - 为什么 Optional 不提供 peek 方法?

java - 如何将 launch4j 与 Java 自定义运行时镜像一起使用?

java - ModiTect 和 Jlink 找不到模块依赖项

Java程序设计-洗牌器

java - JetBrains Intellij 缺少 javax.validation

java - Java10 中的 HttpRequest.BodyProcessor 在哪里