选择性罐子包装

时间:2010-05-22 12:49:16

标签: java jar packages

我有一个小的program.jar,它使用了巨大的library.jar。

的一小部分

是否有工具可将多个罐子重新包装成一个罐子,这样它可以独立运行并尽可能小?

更新:尺寸很重要。

3 个答案:

答案 0 :(得分:3)

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

Proguard在两个方面缩小了尺寸

  1. 只有实际使用的类存储在最终的jar中。
  2. 长名,例如所有长包名称,类名称都被重命名为更短的名称,节省了相当多的空间。
  3. 确定是否在java中使用类有点棘手。静态代码分析可以让你到目前为止,但你需要通过反射访问一些小心的代码,因为该工具可能无法检测到。它处理Class.forName(“xyzFoo”),但是更复杂,你需要将它添加到包含的类的配置文件中,有可能让类加载器生成在运行时使用的类列表,所以这不一定是艰巨的。

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

答案 1 :(得分:2)

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

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

或者如果你使用maven,那就是shade插件:

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

答案 2 :(得分:2)

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