執行 Java 類別相依關係分析器工具 (JDeps)

從 Java 8 開始, JDK 隨附稱為 jdeps (Java 類別相依關係分析器) 的指令行公用程式。 jdeps 指令會分析類別相依關係,並提供額外參數以標示內部 JDK 套件。 在 WebSphere Migration Tool 標示應用程式中發現的大部分移轉問題時,jdeps 工具可讓您額外偵測在移轉至新的 Java 版本之後不再可用的內部 JDK 套件。

在解決二進位或原始檔 WebSphere Migration Tool 標示的問題之後,我們建議您執行 jdeps 指令作為最後一步。 針對您的應用程式 Java 構件執行 jdeps 指令。 如果要確保結果精確,請搭配 -jdkinternals 參數來使用計劃目標 JDK 安裝架構 (例如 JDK 11) 中提供的 jdeps 指令。 例如,在將環境設定為使用 Java 11 之後,執行下列指令:

jdeps -jdkinternals C:\demo\Apps\myapplication.jar

從 Java 9 開始,開始努力限制存取大部分 JDK 內容。 不過,為了協助移轉,依預設會針對存在於 Java 8 中的 API 關閉此強封裝。 從 Java 16 開始, -- illegal-access 啟動程式選項的預設值設為 deny ,而不是 permit。 雖然不建議,但可以透過指定 -- illegal-access=permit,在 Java 16 中略過此限制。 -- illegal-access 也可以設為 warndebug ,以具有與 permit相同的效果,但在使用 warn 時發出警告訊息,並在使用 debug時針對無效的反射存取作業發出堆疊追蹤。

移轉至 Java 17 或更新版本時, -- illegal-access 啟動程式選項已作廢。 現在大部分 JDK 內部已被強力封裝。 雖然不建議,但可以使用 -- add-opens 啟動程式選項或 Add-Opens 來略過此限制。 JAR 資訊清單屬性,用來開啟應用程式或協力廠商程式庫所需的特定套件。

此變更未封裝的某些重要內部 API 包括下列各項:

公用程式會產生輸出,用於識別對 JDK 內部類別的參照並在可能的情況下提供建議的取代 API。 附註:jdeps 指令僅接受 .class 檔案、目錄或 JAR 檔。

如需 jdeps 指令的相關資訊,請參閱 jdeps 參考頁面