JPMS and fatuber executable JAR - how it works together?(JPMS和FATUBER可执行JAR--它是如何协同工作的?)
本文介绍了JPMS和FATUBER可执行JAR--它是如何协同工作的?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想知道当使用JDK>8(即实际上使用JPMS)以及可执行JAR时,FATUBER JAR是如何工作的。
我有两个与此主题相关的问题:
1.FATUBER JAR创建组装流程
每个Java模块通常是一个JAR,它在根条目中保存module-info.class
。
我正在使用Maven,我正在使用Maven汇编插件来构建FATUBER JAR(带有依赖关系的JAR引用描述符)。
如果我的应用程序依赖于许多模块化JAR,那么所有这些JAR将如何共存?毕竟,每个JAR的module-info.class
都将覆盖另一个JAR的module-info.class
文件,因为所有的module-info.class
都应该在根条目中...?
(侧标:我已经用我创建的maven sample project对它进行了测试,并发现最终的FAT JAR只保存第一个遇到的依赖项的module-info.class
。使用-X
选项还发现,由于第一个文件的存在,所有其他module-info.class
文件都被跳过...)
2.可执行JAR
众所周知,可执行JAR可以通过java -jar <jar-file-name.jar>
运行。当以这种形式使用JDK 11时-我的(FAT)JAR及其所有依赖项是否会从类路径运行,并由此被视为未知模块的一部分?还是从模块路径?
推荐答案
您可以从FAT JAR中删除MODULES-INFO.CLASS,以去除模块化元数据。这是一个简单的解决方案,现在您的FAT JAR将是可执行的。
zip -d FatJar.jar module-info.class
这篇关于JPMS和FATUBER可执行JAR--它是如何协同工作的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:JPMS和FATUBER可执行JAR--它是如何协同工作的?
猜你喜欢
- Spring Boot连接到使用仲裁器运行的MongoDB副本集 2022-01-01
- Safepoint+stats 日志,输出 JDK12 中没有 vmop 操作 2022-01-01
- Java包名称中单词分隔符的约定是什么? 2022-01-01
- 从 finally 块返回时 Java 的奇怪行为 2022-01-01
- 将log4j 1.2配置转换为log4j 2配置 2022-01-01
- 如何使用WebFilter实现授权头检查 2022-01-01
- value & 是什么意思?0xff 在 Java 中做什么? 2022-01-01
- Jersey REST 客户端:发布多部分数据 2022-01-01
- C++ 和 Java 进程之间的共享内存 2022-01-01
- Eclipse 插件更新错误日志在哪里? 2022-01-01