java – 嵌套的jar文件

关于构建可执行jar文件的问题.假设我们有一个包含UI.class的jar文件a.jar.我在归档a.jar时使用了一个图元文件

Main-Class: UI
Class-Path: . b.jar c.jar

现在,如果我想将这个可执行文件a.jar发送给某人,我必须发送3个文件 – a.jar,b.jar和c.jar.用户必须将所有3个放在同一个文件夹中,然后双击a.jar即可.如果我可以发送单个文件(a.jar)会更简单,并且JVM可以想出从那里提取b.jar和c.jar来使用这些类.这两个是外部库,我不想扩展它们并重新包装a.jar中的类文件.

可以这样做吗?如果是这样,什么是jar命令以及元文件中应该包含哪些内容?目前命令是

jar cmf metafile a.jar UI.class

谢谢.

最佳答案 你看过这个工具
OneJar了吗?
this也是OneJar上读的好文章.

如果您决定不使用外部工具,那么您可以选择将库/助手jar放入清单中的类路径中,然后将jars本身复制到相对于主jar的目录路径中.

编辑:OP要求一个示例MANIFEST.MF.我从示例One-Jar example jar文件中解决了这个问题.

Manifest-Version: 1.0
Main-Class: com.simontuffs.onejar.Boot
One-Jar-Expand: expand,doc
点赞