我想知道当使用JDK> 8(实际上是与JPMS一起使用)时,fat \ uber jar如何工作,以及可执行的jar。
我有两个与此主题有关的问题:
1。胖\超级jar创建\组装过程
每个Java模块通常是一个在根条目中保存module-info.class
的jar。
我正在使用maven,并且正在使用maven程序集插件来构建fat \ uber jar(带有依赖项的jar引用描述符)。
如果我的应用程序依赖于许多模块化jar,那么这些jar将如何一起生活?毕竟每个jar的module-info.class
都将覆盖另一个jar的module-info.class
文件,因为所有module-info.class
都应位于根条目中……?
(附带标记:我已经用创建的maven sample project对其进行了测试,发现最终的胖子罐中包含第一个遇到的依赖项module-info.class
ONLY 。使用{ {1}}选项还发现,由于存在第一个文件,其他所有-X
文件都被跳过了...)
2。可执行jar
众所周知,可执行jar可以与module-info.class
一起运行。当以这种形式使用JDK 11时-我的(fat)jar及其所有依赖项是否将从类路径运行,并且将其视为未知模块的一部分?或从模块路径?