1 回答
TA贡献1856条经验 获得超17个赞
我能够使用jdeps完成这项工作。用法非常简单:
jdeps <options> <classes...>
其中<classes>
可以是 .class 文件、目录、JAR 文件或完全限定类名的路径名。
我发现一些对我的案例有用的选项:
-verbose:class
:默认打印类级别的依赖关系,不包括同一包内的依赖关系。-classpath <path>
:指定在哪里查找类文件。-package <pkgname>
:查找与给定包名称匹配的依赖项(可以多次给出)-regex <regex>
:查找与给定模式匹配的依赖项-filter <regex>
:过滤与给定模式匹配的依赖项。如果多次给出,将使用最后一个。-filter:package
:过滤同一个包内的依赖关系(默认)-filter:archive
:过滤同一档案内的依赖关系-filter:none
: 没有-filter:package
和-filter:archive
过滤。通过 -filter 选项指定的过滤仍然适用。-include <regex>
:将分析限制为匹配模式的类。此选项过滤要分析的类的列表。-recursive
:递归遍历所有依赖关系。
包的用法示例com.abc.xyz.ui
:
jdeps.exe -filter:archive -classpath <project_classpath> com\abc\xyz\ui\
<project_classpath>
项目的类路径在哪里。
输出:
com.abc.xyz.ui (ui)
-> com.itextpdf.text itextpdf-5.5.12.jar
-> org.apache.commons.io commons-io-2.6.jar
-> org.apache.commons.lang3.time commons-lang3-3.8.1.jar
-> org.apache.commons.text commons-text-1.6.jar
-> org.controlsfx.control controlsfx-8.40.15.jar
-> java.io
-> java.lang
-> java.net
-> java.util
我使用-filter ^java\..*选项排除 Java 运行时类:
jdeps.exe -filter:archive -filter ^java\..* -classpath <project_classpath> com\abc\xyz\ui\
输出:
com.abc.xyz.ui (ui)
-> com.itextpdf.text itextpdf-5.5.12.jar
-> org.apache.commons.io commons-io-2.6.jar
-> org.apache.commons.lang3.time commons-lang3-3.8.1.jar
-> org.apache.commons.text commons-text-1.6.jar
-> org.controlsfx.control controlsfx-8.40.15.jar
添加回答
举报