如何将外部 jar 包含在我的 Netbeans 项目中
当我运行“清理并构建”时,正在创建的文件仅在文件夹位于文件的同一文件夹中时运行。.jar
lib
.jar
因此,如果我将jar文件移动到桌面并将文件夹保留在文件夹中,jar文件将给我一个例外。lib
dist
我该如何处理这个问题?
当我运行“清理并构建”时,正在创建的文件仅在文件夹位于文件的同一文件夹中时运行。.jar
lib
.jar
因此,如果我将jar文件移动到桌面并将文件夹保留在文件夹中,jar文件将给我一个例外。lib
dist
我该如何处理这个问题?
我通过只创建一个包含所有库的 jar 文件,将以下内容添加到 NetBeans 中的构建.xml文件中来解决此问题:
<target name="-post-jar">
<jar jarfile="dist/Combined-dist.jar">
<zipfileset src="${dist.jar}" excludes="META-INF/*" />
<zipfileset src="lib/commons-io-1.4.jar" excludes="META-INF/*" />
<zipfileset src="lib/ninja-utils-3.2.jar" excludes="META-INF/*" />
<zipfileset src="lib/unicorn-1.0.jar" excludes="META-INF/*" />
<manifest>
<attribute name="Main-Class" value="com.example.mypackage.Main"/>
</manifest>
</jar>
</target>
这将创建一个 jar 文件 (Combined-dist.jar),它是 dist jar 和指定库 jar(在本例中为 commons-io-1.4.jar,ninja-utils-3.2.jar 和 unicorn-1.0.jar)的组合。您必须确保为新的 jar 文件指定 Main Class 包,否则当您尝试打开它时,它不会运行。
如果将 jar 复制到源代码目录中,它们将位于最终 jar 中。Nevetheless,我不确定这是否能100%工作。
在java论坛上有一个很棒的帖子,声明如下:
除了少数情况外,最适合我的方法是简单地手动合并文件。.jar基本上是一个具有有组织内容的.zip,您可以在几乎任何.zip的存档程序中打开它们(我只使用gnome的标准存档器File Roller,它工作得很好)。备份您的jar文件并在您选择的存档器中打开它,并对库目录中的每个库jar执行相同的操作。将工作文件夹(IE,除 META-INF 目录之外的所有内容)从每个库拖放到 jar 的根路径中(与 META-INF 和应用的根包一起)。现在拖动 META-INF/MANIFEST。MF 文件从您的 jar 到您的桌面或任何其他文件夹。打开它,并擦除“类路径”和“X-注释”行。不要忘记在文件末尾留下一个空白换行符!保存新的清单文件并将其拖回jar的META-INF目录,覆盖旧的目录。测试罐子。