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
添加回答
举报
