Java的9:使用第三方jar文件生成与JLINK运行时图像

问题描述 投票:7回答:2

我想创建一个包含第三方罐一个Java运行时9图像。我做了一个简单的Java项目(我们称之为Example)来调用一个实用工具JAR(我们称之为ExampleUtil.jar)。 Example包含在module-info.java目录src并在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`

......我得到的错误信息:

错误:模块info.class找不到ExampleUtil模块

有没有一种方法来创建使用不模块罐子运行时的形象?谢谢。

java java-9 jlink
2个回答
15
投票

不,JLINK要求所有包含的模块是明确的,这意味着他们需要有一个模块描述符。下面是the documentation说对JLINK的模块路径:

其中JLINK工具发现可观察到的模块的路径。这些模块可以是模块化的JAR文件,JMOD文件,或展开模块。

注意不存在“普通的JAR”(即无JAR文件的描述符)的。

您可以升级现有的第三方JAR文件,以模块化的广口瓶,但(与一些努力)。步骤如下:

或者,你可以像使用ModiTect,做这些事情对你的工具。


0
投票

JLINK直接做不到这一点。关键是要呼吁所有外部库jdeps收集他们的系统模块依赖,以及比修改参数进行相应JLINK。生成module-info.java并不总是可行的解决这个问题,但你可以使用jdeps是看你需要什么样的系统模块,比创建一个自定义的Java运行时与JLINK其中包括所有这些系统的依赖,并把外部库在classpath或模块路径取决于依赖如果它们是非模块化瓶或自动模块罐子。

您可以使用像一个特殊的Maven插件自动执行任务。

© www.soinside.com 2019 - 2024. All rights reserved.