8

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

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

我意识到反射可能会使事情复杂化,但我可以使用忽略反射的工具。除此之外,这似乎是一个相对简单的问题。

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

4

4 回答 4

3

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

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

于 2008-09-16T20:03:51.687 回答
2

你看过 Dependency Finder 吗?

http://depfind.sourceforge.net/

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

于 2008-09-16T21:00:16.153 回答
1

我用过

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

并发现它非常好。

此外,如果你有一套好的单元/验收测试,你会发现你是否轻松地打破了任何反射:)。

于 2008-09-16T21:03:31.293 回答
0

在 Bill K 的回复中添加一些内容:您可能根本不使用反射,但您正在使用的 JAR 可能会。我记得在 xalan 和 xerces 中遇到过类似的情况,其中在运行时抛出了 ClassNotFoundException。

于 2008-09-16T21:04:41.883 回答