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

bri*_*n_d 8 java installer jar

我已经看到像http://one-jar.sourceforge.net/http://fjep.sourceforge.net/index.html这样的程序将你的应用程序jar和任何依赖项推送到一个可执行的jar中.

这样做的主要原因是什么?

Rek*_*kin 10

对于:

  • 更容易分发,
  • 使类路径问题消失,
  • 甚至可以在Ms PowerPoint演示文稿中打包作为可点击的图标,可能OpenOffice也可以处理它.

反对:

  • 困难的包装 - 有时你会碰到一个角落的情况,例如:如何打包原生扩展,
  • 需要额外的构建步骤,
  • 生成更大的罐子,
  • 可以违反图书馆的许可协议,
  • 杀死了图书馆重用的概念,
  • 进行更新和
  • 调试(因为额外的类路径加载器)更加困难.

因此,一般来说,它确实是快速原型制作的好方法,但如果在更大的项目中使用,可能会遇到困难.


cro*_*wne 5

我在工作场所看到的一个合理原因是由于供应商提供了需要在类路径中的原始版本之前的修补程序jar.
但是,此应用程序是通过java webstart(jnlp)启动的,从java版本6开始,不再保证jar文件依赖项的顺序.
因此,确保重复的类文件处于正确顺序的唯一方法是将它们重新打包到超级jar中,保留最新的修补类文件并丢弃旧的重复项.