我已经为一个Java项目开发了一个模块。该模块依赖于外部库(fastutil)。问题是,fastutil.jar文件比整个项目本身(14MB)重几倍。我只使用了库中的一小部分类。这个模块现在已经完成了,没有人可能在将来扩展它。有没有一种方法可以只将相关的类提取到某个fastutil_small.jar中,这样其他人就不必下载所有这些额外的权重?
发布于 2010-04-09 17:57:37
模糊处理工具(如ProGuard )通常提供一种功能,可以从jar文件中删除未使用的类(甚至字段和方法)。但是,你必须小心地验证所有东西仍然有效,因为你可能正在使用reflecton来访问ProGuard无法分析的类或方法。
您可以只使用该功能,并且已经节省了相当多的成本
或者,您可以将其与其他节省空间的混淆技术(如类和方法重命名)结合使用,以节省更多的空间,但代价是更难进行调试(堆栈跟踪将变得更难解析)。
发布于 2010-04-09 18:04:01
从fastutil的installation instructions:
注意,jar文件很大,因为有大量的类:如果您计划发布自己的jar,其中包含一些fastutil类,那么您应该查看AutoJar (也可以在JPackage上获得)来自动提取所需的类。
发布于 2010-04-09 18:04:12
由于fastutil是LGPL开源软件,您只需将相关的源文件复制到您的项目中并删除该jar文件即可。然后编译器会告诉你是否有你需要的所有文件。只需保持软件包的原样,并在上面放一份fastutil许可文件的副本。
https://stackoverflow.com/questions/2606424
复制相似问题