【问题标题】:Reducing jar file size? [duplicate]减少 jar 文件的大小? [复制]
【发布时间】:2011-10-18 16:54:28
【问题描述】:

有没有一个很好的应用程序可以通过消除冗余来减少 jar 文件的大小 类/方法/常量池元素? (即无法从固定的 一组入口点,假设没有反射)

当我只使用其中的几种方法时,我已经厌倦了拉入臃肿的库。

(我不是在谈论小的“本地”优化,比如使名称更小。我更多的是考虑进行全局分析以找出使用了哪些类/方法/变量,给定一组入口点(包括反射入口点),并删除所有未使用的内容。

我的 webapp 大概是 45MB,主要是因为有 30 多个库,而且我很确定我只使用了每个库的一小部分。

【问题讨论】:

  • @hairraisin 我认为这不会有什么不同(但我可能是错的),因为jarsalready zip 存档(带有一些附加信息)。
  • @hairraisin 哦,没听懂 ;)

标签: java jar compression


【解决方案1】:

是的,有一个 - Proguard

ProGuard 是一个免费的 Java 类文件收缩器、优化器、混淆器, 和预验证。它检测并删除未使用的类、字段、 方法和属性。它优化字节码并删除未使用的 指示。它重命名剩余的类、字段和方法 使用无意义的短名称。最后,它预先验证处理过的 Java 6 或 Java Micro Edition 的代码。

【讨论】:

  • 谢谢!哦,有这样的东西可以直接在战争文件上工作吗?
  • @user1001630 你的意思是不解压?否则解决方案is to use proguard anyways
  • 我从来没有使用 proguard 做任何事情。在我尝试过的任何罐子上它总是失败。
【解决方案2】:

混淆通常会大大减少 jar 文件的大小。

您可能想尝试Proguard(开源)等工具。

您可以在此页面中看到一些缩小尺寸的示例:

【讨论】:

    【解决方案3】:

    另一个不错的技巧,通常使用未命名的包,即删除名称(会出现),也可以减小 jar 大小。

    在我的情况下,我的 jar 从 24,243 字节变为 23,946。是的,没什么大不了的,但我认为仍然是一个很酷的技巧。

    来自高效的 MIDP 编程:

    “使用‘未命名的包’——将所有 MIDlet 类放在同一个命名的包中只会增加 MIDlet 的 JAR 文件的大小;为库保留包语句” http://carfield.com.hk/document/java/articles/Efficient_MIDP_Programming.pdf

    【讨论】:

      猜你喜欢
      • 2012-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多