如何获取主类的Java类依赖项列表?

时间:2008-10-14 09:19:37

标签: java dependencies dependency-management

有没有办法找到java主类的所有类依赖项?

我一直在手动筛选主类的导入和它的导入但后来意识到,因为一个人不必导入同一个包中的类,所以我整理了一个不完整的列表。

我需要能够递归地找到依赖关系的东西(也许是定义的深度)。

5 个答案:

答案 0 :(得分:5)

我刚刚找到Class Dependency Analyzer,下载,安装配置,10分钟后我有一个完整的类依赖列表。

答案 1 :(得分:4)

只需javac即可完成。删除您的类文件,然后编译主类。 javac将递归编译它需要的任何类(假设你没有在奇怪命名的文件中隐藏包私有类/接口)。当然,这不包括任何递归黑客。

答案 2 :(得分:1)

intellij idea {p>你有漂亮的dependency structure matrix。您可以完美地探索包级和类级依赖关系。如果你更喜欢它,你也有一个依赖查看器,但是你只能看到一阶依赖。

答案 3 :(得分:1)

您可能需要查看jdeps命令行工具:

https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jdeps.html

jdeps -cp <your cp> -v <path to your .class file>

该命令将返回该java类文件的依赖项列表。您可以在命令中使用许多其他选项,例如-regex,以查找与给定模式匹配的依赖项

答案 4 :(得分:0)

这是一个代码片段,您可以将其放入Java的main方法中,以输出应用程序的所有依赖项的路径:

ClassLoader cl = ClassLoader.getSystemClassLoader();
URL[] urls = ((URLClassLoader) cl).getURLs();
for(URL url: urls){
    System.out.println(url.getPath());
}