【问题标题】:Selective jar packaging选择性罐装
【发布时间】:2011-10-29 00:50:05
【问题描述】:

我的小程序.jar 使用了巨大 library.jar 的一小部分。

是否有一种工具可以将多个 jar 重新打包成一个,以便可以独立运行并尽可能小?

更新:尺寸很重要。

【问题讨论】:

标签: java jar packages


【解决方案1】:

proguard,带有 ant 和 maven 插件。它会删除未使用的代码,可选择混淆和压缩到单个 jar。

Proguard 在两个方面减小了尺寸

  1. 只有实际使用的类才存储在最终的 jar 中。
  2. 长名称,例如所有长包名、类名都被重命名为更短的名称,节省了相当多的空间。

确定一个类是否在 java 中使用有点棘手。静态代码分析可以帮助您到目前为止,但您需要小心通过反射访问代码,因为该工具可能无法检测到这一点。它处理 Class.forName("x.y.z.Foo") 但任何更复杂的事情,您需要将其添加到要包含的类的配置文件中,可以让类加载器生成在运行时使用的类列表,所以这不必很费力。

您可能还想研究pack200 压缩方案,因为这也可以显着减小 jar 的大小。

【讨论】:

    【解决方案2】:

    JarJar 是一个基于蚂蚁的解决方案:

    http://code.google.com/p/jarjar/

    或者如果你使用 maven,还有 shade 插件:

    http://maven.apache.org/plugins/maven-shade-plugin/

    【讨论】:

      【解决方案3】:

      您可以尝试使用 Ant jar task - 可以在此处阅读更多信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-24
        • 1970-01-01
        • 2023-01-09
        • 1970-01-01
        • 1970-01-01
        • 2011-10-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多