指令jdeps提供有關模組內依賴項目的資訊。
相比於指令java或jar使用選項「--describe-module」,該指令除了檢視模組資訊檔之外,它還查看程式碼,因此可以反應更詳實的結果。
先從一個簡單的範例開始,使用選項「-summary」提供模組zoo.animal.feeding的JAR檔的依賴項目的概略說明:
jdeps
-summary
mods/zoo.animal.feeding.jar
選項「-summary」可以使用「-s」予以簡化。兩者會有一樣結果:
輸出顯示只有一個套件並依賴於內建的java.base模組:
【結果】
zoo.animal.feeding -> java.base |
若未使用-summary選項則可以得到完整的結果。指令為:
jdeps
mods/zoo.animal.feeding.jar
結果為:文字結果:
1 |
zoo.animal.feeding |
2 |
[file:///C:/java11/code/zoo.staff/mods/zoo.animal.feeding.jar] |
3 |
requires mandated java.base (@11.0.12) |
4 |
zoo.animal.feeding -> java.base |
5 |
zoo.animal.feeding ->
java.io java.base |
6 |
zoo.animal.feeding ->
java.lang java.base |
【說明】
1 |
模組名稱。 |
2 |
模組檔案路徑。 |
3 |
模組相依項目與版本。 |
4 |
與使用-summary選項結果相同。 |
5 |
模組zoo.animal.feeding使用套件java.io,屬於模組java.base。 類別Task使用System.out,稱為「標準輸出」,涉及Java I/O。 |
6 |
模組zoo.animal.feeding使用套件java.lang,屬於模組java.base。 類別Task使用System類別,屬於套件java.lang。 |
接下來檢視一個具備更複雜的模組依賴關係的zoo.animal.care的JAR檔案。因為zoo.animal.care依賴於zoo.animal.feeding,分析時必須使用選項「--module-path」告知相依模組的路徑。先前檢視zoo.animal.feeding不需要該選項是因為所有依賴模組都內建在JDK中。
指令為:
jdeps
-summary
--module-path mods
mods/zoo.animal.care.jar
注意這裡的「--module-path」選項不能以-m或-p取代。
結果為:
文字結果:
zoo.animal.care -> java.base |
zoo.animal.care -> zoo.animal.feeding |
可以看出zoo.animal.care模組依賴自定義的zoo.animal.feeding模組與Java內建的java.base模組。
去除選項-summary改以完整模式下執行:
jdeps --module-path mods mods/zoo.animal.care.jar
zoo.animal.care |
|
2 |
[file:///C:/java11/code/zoo.staff/mods/zoo.animal.care.jar] |
3 |
requires mandated java.base (@11.0.12) |
4 |
requires transitive zoo.animal.feeding |
5 |
zoo.animal.care -> java.base |
6 |
zoo.animal.care ->
zoo.animal.feeding |
7 |
zoo.animal.care.details
-> java.lang
java.base |
8 |
zoo.animal.care.details
-> zoo.animal.feeding
zoo.animal.feeding |
9 |
zoo.animal.care.medical ->
java.lang java.base |
可以看出行5、6與使用-summary選項結果相同,行7-9則輸出相依的套件與模組細節。
沒有留言:
張貼留言