我为Java项目开发了一个模块。该模块取决于外部库(fastutil
)。问题是,fastutil.jar
文件比整个项目本身(14 MB)重两倍。我只使用库中的一小部分类。模块现在已经完成,未来没有人可能扩展它。有没有一种方法可以将相关课程仅提取到某些fastutil_small.jar
,以便其他人不必下载所有这些额外的重量?减少外部jar文件的大小
回答
模糊工具(如ProGuard)通常提供了一个功能,可以从jar文件中删除未使用的类(甚至字段和方法)。但是,您必须小心地确认一切仍然有效,因为您可能正在使用反射来访问ProGuard无法分析的类或方法。
您只能使用该功能,并已得到相当长的一段节省
或者你也可以与其他节省空间的模糊技术(如类和方法重命名)结合起来,以在较硬的成本节省更多空间调试(您的堆栈跟踪将变得更难分析)。
+1前5个字与我的想法完全一致,因为我从proguard指令中读取 – 2010-04-09 10:13:02
'ProGuard要求输入罐的库罐(或战争,耳朵,拉链或目录)为指定。这些本质上是编译代码所需的库。 ProGuard使用它们来重建正确处理所需的类依赖关系。图书馆自己始终保持不变。你仍然应该把它们放在最终应用程序的类路径中。' 但是,减少库jar文件的大小正是我想要的(或者我使用了错误的词汇吗?)。我错过了什么? – 2010-04-09 10:32:44
@joe:你可以很容易地解决这个问题,通过'-injars'指定库而不是'-libraryjars' – 2010-04-09 10:40:10
是的一个原油是有你的原始罐的备份。然后从jar中删除所有未使用的类文件。并且可能会有其他类的内部引用,您可以在需要时添加它们。即在执行时可能会抛出一个没有发现异常的类,因此可以将该类从原始jar添加到该jar中。
从fastutil的installation instructions:
注意,jar文件是巨大的,由于大量的类:如果您打算运往自己的罐子一些fastutil类包括在内,你应该看看AutoJar(也可在JPackage上获得)自动提取必要的类。
是的,我做了rtfm :)我只是没有完全设法做任何有用的事情呢(noob,记住?:)) – 2010-04-09 10:37:19
事实证明,我所要做的就是尝试三次。 – 2010-04-09 11:01:51
由于fastutil是LGPL开源软件,您可以将相关的源文件复制到您的项目中,然后删除该jar文件。编译器会告诉你是否有你需要的所有文件。只要保持软件包的原样,并将fastutil许可证文件的副本放在最上面。
- 1. 如何减少jar大小
- 2. 减少HTML文件大小?
- 3. 减少SWF文件大小
- 4. 减少.XAP文件大小?
- 5. 减少HtmlUnit库的jar大小
- 6. 确定使用的库,以减少JAR文件的大小
- 7. 减少图像的文件大小
- 8. 减少散点图的文件大小
- 9. 减少.NET中的PNG文件大小
- 10. 减少UIImage的文件大小?
- 11. 减少DOMPDF生成的文件大小
- 12. 减少pyinstaller可执行文件大小
- 13. CPP MediaFoundation - mp4文件大小减少
- 14. 熊猫和HDF5文件大小减少
- 15. 减少mercurial .hg文件夹大小
- 16. APK文件大小减少清单
- 17. 减少图像文件大小
- 18. 减少qemu快照文件大小
- 19. 如何减少swf文件大小flex
- 20. 如何减少图像文件大小
- 21. 减少.git文件夹大小:Jenkins版
- 22. 用php减少jpeg文件大小
- 23. Magick.NET减少gif文件大小
- 24. 使用Ghostscript减少PDF文件大小
- 25. 如何在java中减少多部分文件的大小
- 26. 减少/缩小使用JNA的Java Project的JAR大小?
- 27. Iphone发行编译:如何减少外部库的大小?
- 28. 调整大小后图像的文件大小没有减少
- 29. 减少TimePicker大小
- 30. 减少BitmapDrawable大小
其实你想要什么? – Venkat 2010-04-09 10:00:03
好吧,将我的模块添加到项目中。这是一些相对较小的Java软件包。我想要的只是我对'fastutil'几个类的依赖不应该将项目的规模增加三倍。 – 2010-04-09 10:31:17