Jon*_*nku 8 java jlink java-platform-module-system
具有依赖于自动模块的显式模块化项目,例如,依赖于java.activation。仍然可以使用jlink吗?
请参阅以下module-info.java:
module hello {
requires java.activation;
}
Run Code Online (Sandbox Code Playgroud)
然后,Jlink无法添加模块:
$ jlink --module-path target/modules --add-modules hello --output target/jlink
Error: automatic module cannot be used with jlink: java.activation from file:///C:/Development/jlinkExample/target/modules/javax.activation-api-1.2.0.jar
Run Code Online (Sandbox Code Playgroud)
根据我的理解,自动模块无论如何都将包含整个类路径,所以我猜想用jlink创建运行时映像没有好处吗?另请参阅:什么是自动模块?
有没有可能解决这个问题的方法,也许为那些依赖项生成一个模块信息?
根据我的理解,自动模块无论如何都会包含整个类路径,所以我想使用 jlink 创建运行时映像没有任何好处?
不,自动模块不会包含整个类路径。事实上,未显式定义为模块(包含module-info.java)但在模块路径上找到的工件被视为自动模块,以弥补显式模块和类路径代码之间的差距。
是否有可能绕过这个问题,也许为这些依赖项生成模块信息?
是的,您可以创建一个module-info.javawith或使用jdepsmoditect等插件来为模块生成模块信息并将其注入到现有的 JAR 中。
一旦工件(JAR)具有显式模块声明,jlink就应该接受它而不会失败。
| 归档时间: |
|
| 查看次数: |
2108 次 |
| 最近记录: |