减少外部jar文件大小

我为Java项目开发了一个模块。 该模块依赖于外部库( fastutil )。 问题是, fastutil.jar文件比整个项目本身重14倍(14 MB)。 我只使用库中的一小部分类。 该模块现已完成,未来任何人都不可能扩展它。 有没有办法我只能将相关的类提取到一些fastutil_small.jar以便其他人不必下载所有这些额外的重量?

诸如ProGuard之类的混淆工具通常提供从jar文件中删除未使用的类(甚至字段和方法)的function。 但是,您必须小心validation一切仍然有效,因为您可能正在使用reflecton来访问ProGuard无法分析的类或方法。

您只能使用该function,并且已经获得了相当多的节省

或者您可以将其与其他节省空间的混淆技术(例如类和方法重命名)结合起来,以更难调试的代价节省更多空间(您的堆栈跟踪将变得难以解析)。

从fastutil的安装说明 :

请注意,jar文件很大,因为有大量的类:如果你计划运送你自己的jar包含一些fastutil类,你应该看看AutoJar (也可以在JPackage中使用)自动提取必要的类。

由于fastutil是LGPL开源软件,您可以将相关的源文件复制到项目中并删除该jar文件。 然后,编译器会告诉您是否拥有所需的所有文件。 只需按原样保存包,并将fastutil许可文件的副本放在最上面。

是的一个原油是备份你原来的jar子。 然后从jar中删除所有未使用的类文件。 并且可能存在对其他类的内部引用,您可以在需要时添加它们。 即在执行它时可能会抛出一个未找到类的exception,因此您可以将该类从原始jar添加到此jar。