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
添加回答
舉報