我有一个小program.jar,它使用了巨大的library.jar 的一小部分。
有没有一种工具可以将多个 jar 重新打包成一个,以便它可以独立运行并且尽可能小?
Update:大小事项。
有proguard http://proguard.sourceforge.net/,带有 ant 和 maven 插件。它会删除未使用的代码,可选择混淆并压缩到单个 jar 中。
Proguard 在两个方面减小了尺寸
- 只有实际使用的类才会存储在最终的 jar 中。
- 长名字,例如所有长包名、类名都被重命名为更短的名称,节省了大量空间。
判断一个类是否在java中被使用有点棘手。静态代码分析可以帮助您到目前为止,但您需要小心通过反射访问的代码,因为该工具可能无法检测到这一点。它处理 Class.forName("x.y.z.Foo") 但任何更复杂的事情,您需要将其添加到要包含的类的配置文件中,可以让类加载器生成在运行时使用的类的列表,因此这并不一定很困难。
您可能还想调查pack200 http://java.sun.com/j2se/1.5.0/docs/guide/deployment/deployment-guide/pack200.html压缩方案,因为这也可以带来罐子大小的显着减小。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)