从许多jar文件创建合并的可执行文件Jar(在类路径中使用)

时间:2012-08-03 08:43:37

标签: java jar merge executable-jar

我有一个桌面应用程序,它被打包为一个自执行jar文件,但是我的代码需要访问许多jar文件,我已经在清单文件的class-path中设置了这些文件。但我遇到的问题是所有在类路径中使用的jar我必须将它们保存在与我的可执行jar文件相同的目录中。我需要的是以某种方式合并所有各种罐子以便我可以在.mf文件中的class-path中指定这个jar。 .mf文件是 - >

Class-Path: poi-3.7-20101029.jar poi-examples-3.7-20101029.jar poi-ooxml-3.7-20101029.jar poi-ooxml-schemas-3.7-20101029.jar poi-scratchpad-3.7-20101029.jar jfreechart-1.0.14.jar jcommon-1.0.17.jar jfreechart-1.0.14-experimental.jar jfreechart-1.0.14-swt.jar junit.jar servlet.jar swtgraphics2d.jar gnujaxp.jar iText-2.1.5.jar
Main-Class: gui/GUILauncher

请建议我一个解决方案,这样我才能实现我的目标......

2 个答案:

答案 0 :(得分:1)

您可以在清单

中指定每个文件的路径
Class-Path: lib/poi-3.7-20101029 ...

将图书馆藏在这里。

虽然我喜欢将所有类组合成一个Jar的想法,但您需要注意可能共享相同路径的资源。我们的应用程序中存在此问题,我们所有的Jars都包含一个我们用作标记的版本文件,并通过Class.getResources(...)

读取

答案 1 :(得分:0)

您无需将所有这些jar保存在可执行jar目录中。相反,您可以在Manifest.mf文件中指定相关jar的相对路径。 例如 您已将可执行jar保存在bin文件夹和lib文件夹下的相关jar下。 应用程序根  +  + \ bin  + + GuiLauncher.jar  +  + \ lib      + junit.jar      + servlet.jar

Manifest.mf Classpath将是

Class-Path: ..\lib\junit.jar ..\lib\servlet.jar