查找最小的必要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。