我想创建一个包含第三方jar的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`
Run Code Online (Sandbox Code Playgroud)
...我收到错误消息:
错误:找不到ExampleUtil模块的module-info.class
有没有办法使用非模块的jar创建运行时映像?谢谢.
Nic*_*lai 15
不,jlink要求所有包含的模块都是显式的,这意味着它们需要具有模块描述符.以下是文档中有关jlink模块路径的内容:
jlink工具发现可观察模块的路径.这些模块可以是模块化JAR文件,JMOD文件或分解模块.
注意缺少"普通JAR"(即没有描述符的JAR).
您可以将现有的第三方JAR升级为模块化JAR(需要付出一些努力).步骤是:
module-info.java为它创建一个(手动或使用JDeps)module-info.class 与--patch-module讲述源的编译器jar --update将模块声明添加到现有JAR或者,您可以使用像ModiTect这样的工具为您完成这些工作.