代码之家  ›  专栏  ›  技术社区  ›  brian_d

建一个大罐子而不是几个小罐子的优点/缺点?

  •  8
  • brian_d  · 技术社区  · 15 年前

    我看过这样的节目 http://one-jar.sourceforge.net/ http://fjep.sourceforge.net/index.html 促进将应用程序jar和任何依赖项滚动到单个可执行jar中。

    5 回复  |  直到 15 年前
        1
  •  10
  •   Rekin    15 年前

    用于:

    • 使类路径问题消失,

    • 需要额外的构建步骤,
    • 产生更大的罐子,
    • 扼杀了图书馆再利用的概念,
    • 调试(由于额外的类路径加载器)更加困难。

        2
  •  5
  •   crowne    15 年前

    我在工作场所看到的一个合理原因是,供应商提供的热修复jar需要在类路径中的原始版本之前。
    但是,这个应用程序是通过javawebstart(jnlp)启动的,从javaversion6开始,jar文件依赖关系的顺序就不再有保证了。
    因此,确保重复类文件顺序正确的唯一方法是将它们重新打包到uberjar中,保留最新的修补类文件并丢弃旧的重复。

        3
  •  4
  •   Vineet Reynolds    15 年前

    重新分配适用于依赖关系的许可证是反对构建“uber”jar的一个主要原因。当一个人创建一个“uber”jar时,任何依赖项的分布都会通过“uber”jar的分布发生。而在一些地区,判例法并没有充分涵盖这种情况,人们可能会敞开心扉承担责任。

    可能禁止 重新打包依赖项,特别是在原始分布不守恒的情况下。

        4
  •  2
  •   James Van Huis    15 年前

    用于:

    • 绑定库和本机代码
    • 确保类路径元素的正确运行时顺序

    反对:

    • 新的顶级类加载器可能会引入在正常开发周期中看不到的问题
    • 在不同许可条款下重新打包库的合法性

    一般来说,如果它是一个小型实用程序,我将把它捆绑到一个jar中。对于更大的应用程序(可能无论如何都需要安装程序),或者如果它是供其他人使用的库,我不会费心。这将是另一个环节的东西,可以打破链。

        5
  •  1
  •   Michael Wilson    15 年前

    推荐文章