【问题标题】:Can i combine many jar files in one jar file我可以将多个jar文件合并到一个jar文件中吗
【发布时间】:2011-07-02 15:39:49
【问题描述】:

我有多个 JAR 文件,我必须将它们添加到 Eclipse 的类路径中。

是否可以将 30 个文件合并到一个文件中并包含该文件?

【问题讨论】:

标签: java eclipse jar


【解决方案1】:

首先,你可以。 JAR 只是一个 ZIP 文件。您可以将所有内容提取到一个目录中,然后创建 zip 文件(甚至使用 WinZip 或类似工具手动),调用结果 *.jar(如果您愿意)并将其添加到类路径中。

唯一可能发生的问题是如果多个 jar 文件包含具有相同名称(和路径)的资源。例如,manfest.mf 或其他描述符。在大多数情况下,它不会导致任何问题,但有时如果应用程序代码使用这些资源,您可能会遇到麻烦。

有一些自动工具可以做到这一点。看看 JarJar。

但更重要的问题是:您为什么要这样做?如果您不使用 maven,请将所有库 jar 放在项目下名为 lib 的一个目录中。然后使用 2-3 次单击将所有这些 jars 添加到 eclipse 中的类路径中。而已。

如果您使用的是 maven,请将所有直接依赖项包含到您的 pom.xml 中,编译项目,然后输入mvn eclipse:eclipse。这将为您创建 .classspath 和 .project 。现在就用它吧。

【讨论】:

    【解决方案2】:

    这里还有一个线程解释了如何package jars for releases,包括使用Ant、jarjar 和eclipse 插件。

    【讨论】:

      【解决方案3】:

      您可能想看看jarjar

      如果你使用蚂蚁任务,你也可以去zipgroupfileset

      <zip destfile="jarlibrary.jar">
          <zipgroupfileset dir="lib" includes="*.jar"/>
      </zip>
      

      【讨论】:

        【解决方案4】:

        有许多现有的工具可以做到这一点:

        【讨论】:

          【解决方案5】:

          可以,但我认为这样做不一定是个好主意。三个可能的原因,毫无疑问还有更多:

          • 这使得查看任何一个组成文件的来源变得更加困难。
          • 仅替换一个库变得更加困难
          • 如果有文件包含在多个jar文件中,哪个应该“赢”?例如,所有 jar 文件都有自己的清单...您可以将它们全部合并,但不一定...对于其他文件,可能根本就没有一种明智的方式来合并它们。

          我的投票是将 jar 文件分开。

          【讨论】:

          • 我反对“仅替换一个库会更难”这一点,因为您可以在构建过程中将它们组合起来,但单独保存和管理它们。
          • @Tim - 如果您是某个仅提供“uberjar”的项目的消费者,这将无济于事。
          • @Stephen C:是的,但我们真的不知道这里的情况。也许,他没有为其他项目提供一个库来使用。如果他这样做了,那么像依赖管理这样的专家会更合适。
          【解决方案6】:

          这个问题似乎很可能重复。请尝试从本论坛的类似文章中找到答案 Clean way to combine multiple jars

          【讨论】:

            【解决方案7】:

            jarjar 项目正是您所需要的。

            【讨论】:

              【解决方案8】:

              Jar 文件只是 ZIP 文件,因此您可以尝试解压缩所有 jar,将所有文件放在一起,然后再次 ZIP。

              【讨论】:

              • 请注意,这会破坏任何签名。如果你不使用它,那很好。
              猜你喜欢
              • 2013-09-30
              • 2010-10-06
              • 2013-08-28
              • 2010-10-27
              • 2021-02-26
              • 2013-08-13
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多