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

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

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

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

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

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

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

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

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