java - 选择性 jar 装

标签 java jar package

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

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

更新:大小很重要。

最佳答案

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

Proguard 在两个方面减小了尺寸

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

判断一个类是否在java中被使用有点棘手。静态代码分析可以帮助您到目前为止,但您需要对通过反射访问的代码谨慎一些,因为该工具可能无法检测到它。它处理 Class.forName("x.y.z.Foo") 但任何更复杂的东西你都需要将它添加到要包含的类的配置文件中,可以让类加载器生成一个在运行时使用的类列表,所以这并不一定是艰巨的。

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

关于java - 选择性 jar 装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2888119/

相关文章:

java - android:onClick 警告: "Use databinding or explicit wiring of click listener in code"

java - 在 android 中设置 TextView 的可见性不起作用

java - 使用类实例作为泛型类型

java - 运行 JAR 时如何配置日志记录?

Jar 文件中的 Java RMI 注册表

go - 如何在Workiva/go-data structures/中使用b tree/plus

java - .jar 文件的手册页?

java - 使用java流的不兼容类型错误

java - 运行包含 junit 的 jar

javascript - Node mssql : return id after SQL insertion