我有一个桌面应用程序,它被打包为一个自执行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
请建议我一个解决方案,这样我才能实现我的目标......
答案 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