在WAR文件中打包JAR文件

时间:2011-08-01 11:36:39

标签: java jar war

我有一系列依赖的Java项目。我想将它们打包成一个JAR文件,以便在我的WAR文件中使用。这些项目依赖于大量外部库和项目,如log4j,apache-commons等。

我选择Eclipse中的所有项目并导出为JAR文件,然后将JAR文件复制到我的WAR的/ WEB-INF / lib文件夹中,然后部署我的应用程序。我有以下问题:

  1. ClassNotFoundException的。 Web应用程序找不到打包到我的JAR文件中的库。我通过将所有依赖库移出到/ WEB-INF / lib文件夹并将类路径条目添加到JAR的MANIFEST.MF中来解决了这个问题,这是一个非常痛苦的过程。

  2. JAR文件中的类无法找到JAR中打包的属性文件。我该如何解决这个问题?

  3. 这些问题是否有标准解决方案?感谢。

3 个答案:

答案 0 :(得分:4)

我建议使用能为您进行自动依赖管理的内容。如果你已经为你的构建脚本安装了ant,那么常春藤是一个很好的解决方案。如果您没有构建脚本,maven可能值得研究。

依赖管理会自动为您直接使用的依赖项(jar)提供传递依赖项。

答案 1 :(得分:0)

此问题的标准解决方案是将您依赖的所有jar文件放在WEB-INF / lib文件夹中。您正在寻找的是非标准解决方案。

其中,有任何数字。修改清单文件中的类路径是一个。您还可以将它们放在容器共享库目录中,或将它们放在任何位置,并将它们添加到容器进程的全局类路径中。一切都会奏效,但没有一个被认为是最佳实践。

答案 2 :(得分:0)

我在部署时遇到了同样的问题。为了解决这个问题,我只是更改了项目的属性:

  • 右键单击项目
  • 选择“属性”->“部署程序集”->“添加”->“ Java构建路径条目”
  • 选择要添加到Web应用程序中的所有库

如果正确完成,这将自动将外部.jar库添加到您的.war文件中。