找到最小的必要java类路径

时间:2008-09-16 19:59:26

标签: java jar dependencies

是否有工具可以检测不需要的jar文件?

例如说我有myapp.jar,我可以使用包含hibernate.jar,junit.jar和easymock.jar的类路径启动它。但实际上只使用hibernate.jar就可以正常工作,因为调用junit.jar的代码无法访问。

我意识到反思可能使事情变得复杂,但我可以使用忽略反射的工具。除此之外,它似乎是一个相对简单的问题需要解决。

如果没有这样的工具,那么决定需要哪些依赖项的最佳实践是什么?在我看来,这一定是一个普遍的问题。

4 个答案:

答案 0 :(得分:3)

在可能使用反射的系统中,这是不可能的。

也就是说,如果你不使用任何反射,静态分析工具可以做得很好。

答案 1 :(得分:2)

您是否看过Dependency Finder?

http://depfind.sourceforge.net/

该网站上还提供了大多数其他可用Java依赖工具的便捷列表。

答案 2 :(得分:1)

我用过

http://code.google.com/p/jarjar/

并发现它非常好。

另外,如果你有一套好的单位/验收测试,你会发现你是否容易破坏任何反射:)。

答案 3 :(得分:0)

要添加到Bill K的回复中的内容:您可能根本不使用反射,但您正在使用的JAR可能。我记得遇到过像xalan& xerces,其中在运行时抛出了ClassNotFoundException。