最小化 jar 依赖项大小

问题描述 投票:0回答:4

我编写的应用程序使用了多个第三方 jar。有时只使用整个 50kB 到 1.7mB jar 的一小部分 - 一两个函数调用或类。

减少罐子尺寸的最佳方法是什么?我应该下载源代码并构建一个仅包含我需要的类的 jar 吗?哪些现有工具可以帮助自动化此操作(例如我简要浏览了 http://code.google.com/p/jarjar/)?

谢谢你

编辑1: 我想减小第三方“官方”jar 的大小,例如 swingx-1.6.jar (1.4 MB)、set-3.6 (1.7 MB) Glaledlists-1.8.jar (820kB) 等,以便它们仅包含我需要的最低限度的课程

编辑2: 如果库使用反射,则手动或使用 proguard 等程序最小化 jar 会更加复杂。 使用 proguard 进行混淆后,使用 google guice 注入不再起作用

cletus在另一篇文章中的回答非常好如何确定Java程序使用了哪些类?

java jar dependencies utility
4个回答
5
投票

Proguard 将是一个选择。 它可以消除未使用的类和方法。 您还可以使用它进行混淆,这可以进一步减小最终 jar 的大小。 请注意,除非注意保持受影响的类不模糊,否则按名称加载类可能会中断。

我发现 Proguard 非常有效 - 一开始可能有点难以理解。 但我没有任何类似的经验来提供比较。


0
投票

首先,如果您仅使用 JAR 文件中的一个类,这并不意味着该类不使用该 JAR 中的其他类。 如果您使用开源 JAR,您的选择是获取该 JAR 的源代码,将它们附加到您的项目,删除不必要的内容并自行构建更改。


0
投票

您可以将 GenJar 添加为 Ant 任务并使用它来构建 JAR。正如图书馆主页上所说,

GenJar 是一个专门的 Ant 任务, 基于类构建jar文件 依赖关系而不仅仅是 目录的内容。

您可以在 SourceForge 上找到它。


0
投票

我使用 JarTighten 作为发行版构建的最后一步。 JarTighten 可以对最终 JAR 文件使用最佳压缩,并可以删除 JavaVM 在打开 JAR 文件时将忽略的各种细节。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.