我想创建一个包含第3方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`
...我收到错误消息:
有没有一种使用不是模块的jar创建运行时镜像的方法?谢谢你。
最佳答案
不,jlink要求所有包含的模块都是显式的,这意味着它们需要具有模块描述符。这是the documentation关于jlink模块路径的内容:
请注意,没有“普通JAR”(即不带描述符的JAR)。
但是,您可以将现有的第三方JAR升级为模块化JAR(需要一些努力)。这些步骤是:
module-info.java
module-info.class
with --patch-module
to tell the compiler about the sources jar --update
将模块声明添加到现有的JAR 另外,您可以使用ModiTect之类的工具来为您完成这些操作。