Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取主类的Java类依赖项列表?_Java_Dependencies_Dependency Management - Fatal编程技术网

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

如何获取主类的Java类依赖项列表?,java,dependencies,dependency-management,Java,Dependencies,Dependency Management,有没有办法找到java主类的所有类依赖关系 我一直在手动筛选主类的导入和它的导入,但后来意识到,因为不必导入同一个包中的类,所以我整理了一个不完整的列表 我需要一些能够递归地发现依赖关系的东西(可能达到一个定义的深度)。在你身上有一个妙处。您可以完美地探索包级和类级依赖关系。如果您喜欢它更简单,那么您也有一个依赖项查看器,但是在这里您只能看到一阶依赖项。我刚刚找到、下载、安装并配置了,10分钟后我就有了一个完整的类依赖项列表 只需javac就可以轻松完成。删除类文件,然后编译主类。javac将递

有没有办法找到java主类的所有类依赖关系

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


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

在你身上有一个妙处。您可以完美地探索包级和类级依赖关系。如果您喜欢它更简单,那么您也有一个依赖项查看器,但是在这里您只能看到一阶依赖项。

我刚刚找到、下载、安装并配置了,10分钟后我就有了一个完整的类依赖项列表

只需javac就可以轻松完成。删除类文件,然后编译主类。javac将递归地编译它所需要的任何类(只要您不将包私有类/接口隐藏在命名奇怪的文件中)。当然,这不包括任何递归攻击。

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

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

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

jdeps-cp-v

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

我尝试了JavaSkeleton(),但它仅适用于java 1.3或1.4:(这如何生成类依赖项列表?@Derek Mahar您需要执行一个,
查找。-name“*.class”-打印
或,呃,
dir/s
(以及其他一些选项)。出色的解决方案!尤其有效,如果您将javac的输出重定向到一个新的空目录。然后您可以立即将该文件夹放入jar,并拥有一个很好的依赖项库!谢谢!您能确切地说一下您是如何使用它来解决这个特定问题的吗?
jdeps -cp <your cp> -v <path to your .class file>