java - 最小化 jar 依赖大小

标签 java jar dependencies utility

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

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

谢谢

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

编辑 2: 如果库使用反射,则手动或使用类似 proguard 的程序最小化 jar 会更加复杂。 Injection with google guice does not work anymore after obfuscation with proguard

另一个帖子cletus的回答很好How to determine which classes are used by a Java program?

最佳答案

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

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

关于java - 最小化 jar 依赖大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3817666/

相关文章:

java - 创建Gradle项目时报错: Server returned HTTP response code: 403

java - matlab javaaddpath 不再工作(使用 jdk 1.7 构建的 jar)

java - 将一些东西保存到 JAR 中

build - 列出 Play 框架中的依赖项和存储库

java - 多屏幕上的 VolatileImage JFrame

java - Java 运行时环境检测到 fatal error :SIGSEGV (0xb) at pc=0x00007f3457bc96ae, pid=1192, tid=0x00007f345e1ff700

java - 如何列出 JAR 的依赖项

c - 修复 ruby​​ gem 的外部依赖

java - 当对话框中有动态文本时如何验证对话框中的文本

java - 如果[WEB-INF/lib]和[tomcat/lib]包含类似的JAR会发生什么?