查找最小的必要Java类路径
时间:2020-03-05 18:57:00 来源:igfitidea点击:
有没有检测不需要的jar文件的工具?
例如,说我有myapp.jar,可以使用包含hibernate.jar,junit.jar和easymock.jar的类路径启动它。但是实际上,仅使用hibernate.jar可以正常工作,因为调用junit.jar的代码无法访问。
我意识到反射可能会使事情复杂化,但是我可以使用忽略反射的工具。除此之外,这似乎是一个相对简单的问题。
如果没有这样的工具,那么确定需要哪些依赖项的最佳实践是什么?在我看来,这一定是一个普遍的问题。
解决方案
回答
在可能使用反射的系统中,这是不可能的。
也就是说,如果我们不使用任何反射,则静态分析工具可能会做得很好。
回答
我们是否看过Dependency Finder?
http://depfind.sourceforge.net/
该站点上还提供了其他大多数可用的Java依赖工具的便捷列表。
回答
我用过了
http://code.google.com/p/jarjar/
并发现它相当不错。
另外,如果我们有一套很好的单元/验收测试,我们将发现是否容易破坏反射:)。
回答
Bill K的答复中增加了一些内容:我们可能根本不使用反射,但是我们可能正在使用JAR。我记得xalan和xerces遇到过类似的情况,其中在运行时抛出了ClassNotFoundException。