是否有任何工具可以列出应用程序有效使用哪些类,哪些更好,甚至更好地自动修剪JAR库以仅提供引用和使用的类?
答案 0 :(得分:9)
请记住,正如halting problem所证明的那样,您无法确定某个特定类是否使用过。至少在任何中等复杂的应用程序上。这是因为类不仅仅是在编译时绑定,而是可以加载:
所以只看源代码是不够的。话虽这么说,任何合理的IDE都会为您提供依赖性分析工具。 IntelliJ当然可以。
您真正需要的是运行时检测应用程序正在执行的操作,但即使这样也无法保证。毕竟,由于奇怪的输入组合,特定的代码路径可能会在1000万次运行中出现,因此无法保证您已被覆盖。
这样的工具确实有一些价值。您可能希望查看Emma之类的内容。像Yourkit这样的分析器可以为您提供代码转储,您也可以对其进行分析(尽管这不会很好地获取瞬态对象)。
我个人认为除了IDE告诉你的东西之外没什么价值:删除未使用的JAR。比这更细致,只是要求很少甚至没有收获的麻烦。
答案 1 :(得分:4)
是的,你想要ProGuard。它是一个完全免费的Java代码缩减器和混淆器。它易于配置,快速有效。
答案 2 :(得分:3)
您可以尝试JarJar http://code.google.com/p/jarjar/
它修剪了jar依赖项。
答案 3 :(得分:0)
对于大多数情况,只需使用javac即可轻松完成。
删除现有的类文件。使用您的输入类名称调用javac。它将编译必要的类,但不再编译。完成工作。