Java 8 以降、JDK は、jdeps (Java クラス依存関係アナライザー) と呼ばれるコマンド・ライン・ユーティリティーを出荷しています。
jdeps コマンドは、クラスの従属関係を分析し、内部 JDK パッケージにフラグを立てるための追加のパラメーターを提供します。
WebSphere Migration Tool が、アプリケーションで検出されるマイグレーション問題の大多数にフラグを立てる一方、jdeps ツールは、新しい Java バージョンにマイグレーションした後に使用可能でなくなる内部 JDK パッケージの追加検出を提供できます。
jdeps コマンドは、バイナリーまたはソースの WebSphere Migration Tool によってフラグを立てられた問題を解決した後に、最終ステップとして実行することをお勧めします。 jdeps コマンドは、アプリケーションの Java 成果物に対して実行します。
正確な結果を得るには、計画されたターゲット JDK インストール済み環境 (JDK 11 など) で使用可能な jdeps コマンドを -jdkinternals パラメーターを指定して使用します。 例えば、Java 11 を使用するように環境を設定した後、以下のコマンドを実行します。
Java 9 以降、ほとんどの JDK 内部へのアクセスが制限されるようになりました。 ただし、マイグレーションを支援するために、 Java 8 に存在する API の場合、この強力なカプセル化はデフォルトでオフになっています。 Java 16 以降、 -- illegal-access ランチャー・オプションのデフォルト値は、 permitではなく deny に設定されます。 推奨されませんが、 Java 16 で -- illegal-access=permit. -- illegal-アクセス を 警告 または デバッグ に設定して 許可と同じ効果を持つようにすることで、この制限をバイパスできます。ただし、 警告 を使用している場合は警告メッセージを発行し、 デバッグを使用している場合は正しくない反射アクセス操作のスタック・トレースを発行します。
Java 17 以降にマイグレーションする場合、--illegal-access ランチャー・オプションは使用できません。 ほとんどの JDK 内部は強力にカプセル化されるようになりました。 推奨はされませんが、--add-opens ランチャー・オプションまたは Add-Opens JAR マニフェスト属性を使用して、アプリケーションまたはサード・パーティー・ライブラリーに必要な特定のパッケージをオープンすることによって、この制限をバイパスすることができます。
この変更によってカプセル化されない一部の重要な内部 API には、以下が含まれます。
ユーティリティーは、JDK 内部クラスの参照を識別する出力を生成し、可能な場合、提案される置換 API を提供します。
注: jdeps コマンドは、.class ファイル、ディレクトリー、または JAR ファイルのみを受け入れます。
jdeps コマンドについて詳しくは、jdeps 参照ページを参照してください。