2010-09-16 150 views
11

我有一个Java应用程序并创建了一个JAR文件并进行了部署。如何在我自己的项目JAR中包含外部JAR

该应用程序使用外部JAR,如Log4J JAR。在创建我的JAR文件时,如何将所有外部相关JAR包含到我的存档中?

为了让我的应用程序正常工作,我不得不将Log4J JAR复制到与我自己的JAR相同的目录中,这有损于JAR的目的。有一个单一的JAR文件可以部署吗?

+1

非常感谢所有花时间回复的人。我会看看我有的选择,并从那里采取。 Regards John – Wilko 2010-09-20 09:16:45

回答

4

您可以使用类似One-JAR的东西将您的Java应用程序及其依赖关系打包到单个可执行Jar文件中(One-JAR使用自定义类加载器使JAR嵌套成为可能)。

2

你必须将库jars扩展到你的编译类去的地方,然后从那里做一个jar。根据你的构建过程的设置,可能有多种方法来实现这一点。这不是火箭科学 - jar只是一个带有META-INF目录的zip文件。

0

正如您发现的那样,JAR本身并不能够嵌套其他JAR。

传统上,我们会分发一个ZIP归档文件或其他安装程序,以便将应用程序JAR(您的)以及适用于类路径访问的适当位置的任何支持JAR解压缩。然后,通常通过调用主JAR的脚本调用应用程序,并创建列出支持JAR的类路径。

正如其他海报已经指出,你有一些选项来创建超级JAR,如果这是你想要的。

2

保持JAR独立性更好,因为只需将特定的JAR升级到新版本即可轻松进行升级,而无需任何其他配置。由于您需要将每个文件复制到与JAR相同的位置,因此您始终可以使用Java CLASSPATH并将任何JAR包括到应用程序的类路径中。

6

如果你使用Eclipse,您可以提取全部包括文件合并成一个可运行的jar像这样:

  1. 右击从Package Explorer中的项目名称,然后选择导出。
  2. 在导出屏幕中,选择Java - > Runnable JAR文件,然后选择下一步。
  3. 填入可运行JAR文件规格屏幕和完成。

您可以选择是否将依赖项jar打包为独立的jar文件或将它们提取到生成的JAR中。

相关问题