12

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

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

我需要一些能够递归地找到依赖关系的东西(可能达到定义的深度)。

4

5 回答 5

7

你可能想看看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查找与给定模式匹配的依赖项

于 2018-04-23T17:36:10.593 回答
6

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

于 2008-10-14T10:39:17.100 回答
3

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

于 2008-10-14T13:26:26.873 回答
2

intellij 想法中,您拥有漂亮的依赖结构矩阵。您可以完美地探索包和类级别的依赖关系。如果你喜欢它更简单,你也有一个依赖查看器,但是你只能看到一阶依赖。

于 2008-10-14T09:49:55.157 回答
0

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

ClassLoader cl = ClassLoader.getSystemClassLoader();
URL[] urls = ((URLClassLoader) cl).getURLs();
for(URL url: urls){
    System.out.println(url.getPath());
}
于 2018-04-17T10:05:46.093 回答