【问题标题】:Put external library to the JAR? [closed]将外部库放入 JAR? [关闭]
【发布时间】:2011-01-03 07:12:06
【问题描述】:

我已将一些外部库添加到我的 java 项目(在 netbeans 中)。
是否可以将外部 jar 库放入 java 存档(而不是将它们放入单独的(例如)“lib”目录)?

【问题讨论】:

  • “到 java 存档”是什么意思?
  • 我猜 Jani 想将所有的 jar(库)放入一个且只有一个 jar 中。

标签: java


【解决方案1】:

当然可以。有一些开源项目可以通过包含所有依赖项的“bundle jar”下载。
您需要提取所有 jar,然后将它们再次 jar 到一个文件中。
可以看到使用 Ant 执行此操作的示例 here

【讨论】:

    【解决方案2】:

    JarJar 项目允许您将依赖 jar 打包到单个 jar 文件中以进行分发。

    该项目提供了一个 ant 任务来进行打包,并且由于 netbeans 项目在其构建过程中使用 Ant,您应该能够相当轻松地将其集成到您的构建中。

    【讨论】:

      【解决方案3】:

      是的,这是可能的,生成的 jar 实际上称为“uberjar”或“megajar”。基本上,要创建一个“uberjar”,您需要提取外部库的内容(使用jar -x)并将其重新打包到您自己的jar 中(使用jar -c)。这可以手动实现,也可以使用诸如 Ant 的构建工具(以及像 One-JAR 这样的项目的可选支持)或通过 maven-assembly-plugin(或 maven-shade -插件)

      【讨论】:

        【解决方案4】:

        如果您使用的是 Maven,可以考虑使用Maven shade plugin,或者组装插件。

        【讨论】:

          【解决方案5】:

          如果是关于将 jar 打包到 jar 中,这总是针对 web 应用程序在 war 或 ear 文件中完成的。 如果您的应用程序是独立的,您可以使用 Ant jar 和 unjar 任务解压缩 jar 并将它们一起打包到一个生成的 jar 中:http://ant.apache.org/manual/Tasks/unzip.html 但我不建议这样做。

          【讨论】:

            【解决方案6】:

            使用内置的 ant 脚本有一个简单的方法。

            还有一个SO问题指向这篇文章:http://mavistechchannel.wordpress.com/2010/08/17/how-to-build-a-single-jar-file-with-external-libs/

            我添加了它,但是我不知道如何使用它。 This article 有一个很棒的视觉教程。基本上,修改你的 ant 脚本后,转到文件选项卡(在左侧的资源管理器中)=> 右键单击​​ xml => 运行任务 => 其他任务 => 用于存储的包(或任何你命名的脚本)

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2013-05-22
              • 1970-01-01
              • 2017-04-14
              • 2021-12-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多