【问题标题】:Including dependant Jar's inside a single JAR在单个 JAR 中包含依赖 Jar
【发布时间】:2011-12-15 00:16:54
【问题描述】:

我有一个 JAR 文件,其中包含在我的 Web 应用程序中使用的实用程序类。

现在一些实用程序类需要它们各自的库,例如 commons-logging、db2java。

但是我最终打包的实用程序 JAR 不包含这些必需的库,我尝试包含它们但它们没有被类拾取。

谁能告诉我如何将这些依赖库包含在我的实用程序 JAR 中,以便我的类选择它们并正确执行。

【问题讨论】:

  • 你是如何构建你的战争文件的?
  • @Kris,如果他正在构建一个 web 应用程序,那么这个问题不是你引用的那个问题。
  • @Kris。我不是“超级”罐子的忠实粉丝。如果 Vivek 要将 commons-logging 打包到单个 JAR 中,而另一个开发人员将不同版本的 commons-logging 放入应用程序中,您可能会得到不明显的不可预测的结果
  • 我正在使用 ANT 构建我的 WAR 文件,并且此实用程序 JAR 是 WEB-INF 文件夹的一部分问题在于实用程序 JAR 中存在的类,因为我无法理解如何我可以在我的 JAR 中引用实用程序类的所需库吗?我想创建 JAR 的 JAR 是一个问题,对吧??

标签: java ant jar


【解决方案1】:

只需将所有 lib 放在您的 WEB-INF/lib 文件夹中,不要尝试将它们捆绑到一个 JAR 文件中。将您的库分解为自己的 JAR 文件更易于管理。

WEB-INF/lib/
....commons-lang-3.0.jar
....db2java-1.0.jar
....my-utilities-1.0.jar

您还可以查看 jar 的版本(如果您想更新一个),而无需四处寻找它们

【讨论】:

  • 实际上,jar 文件中的 jar 文件不仅更难管理。为 Web 容器管理不可能
  • 但在这种情况下,我的实用程序类存在于我的实用程序 JAR 中。如果我将所需的库放在 WEB-INF/lib 文件夹中,我的实用程序类将如何访问它们?我的意思是,他们会被接走吗?
  • 他说了什么。不要把所有东西都捆绑在一起——这看起来可以节省时间,但最终会让你付钱......
  • @Vivek,是的。应用程序容器(例如 Tomcat、Jetty)会将 WEB-INF/lib 中的 jars 添加到应用程序的类路径中。
【解决方案2】:

如果您对将所有依赖 jar 文件存储在单个 jar 中的方法感兴趣,我建议您使用 fatjar 插件。它完全符合您的要求。我已经多次使用它来快速部署 Web 小程序和桌面应用程序。

【讨论】:

  • 感谢您的提示,我会记住的。但是布拉德的建议对我有用
猜你喜欢
  • 2014-01-08
  • 1970-01-01
  • 1970-01-01
  • 2012-12-14
  • 2023-03-30
  • 2015-12-27
  • 2010-12-16
  • 2017-04-28
相关资源
最近更新 更多