Ab Java 8 stellt das JDK ein Befehlszeilendienstprogramm mit dem Namen jdeps (Analyseprogramm für Java-Klassenabhängigkeiten) bereit.
Der Befehl jdeps analysiert Klassenabhängigkeiten und stellt zusätzliche Parameter für die Markierung interner JDK-Pakete bereit.
Das Migrationstool von WebSphere markiert zwar die meisten Migrationsprobleme in einer Anwendung, aber das Tool
jdeps interne JDK-Pakete erkennen, die nach der Migration auf eine neue Java-Version nicht mehr verfügbar sind.
Es wird empfohlen, den Befehl jdeps als letzten Schritt nach der Behebung der von den binären oder Quellenmigrationstools von
WebSphere markierten Probleme auszuführen. Führen Sie den Befehl jdeps für Ihre Java-Anwendungsartefakte aus.
Um genaue Ergebnisse sicherzustellen, verwenden Sie den Befehl jdeps , der in Ihrer geplanten JDK-Zielinstallation, z. B. JDK 11, mit dem Parameter -jdkinternals verfügbar ist. Führen Sie nach dem Einrichten Ihrer Umgebung für die Verwendung von Java 11 beispielsweise den folgenden Befehl aus:
Ab Java 9 wurde ein Versuch gestartet, den Zugriff auf die meisten JDK-Internals zu beschränken. Zur Unterstützung der Migration wurde diese starke Kapselung jedoch standardmäßig für APIs inaktiviert, die in Java 8 vorhanden waren. Ab Java 16 ist der Standardwert der Startprogrammoption -- illegal-access auf deny und nicht auf permitgesetzt. Obwohl nicht empfohlen, kann diese Einschränkung in Java 16 umgangen werden, indem -- illegal-access=permitangegeben wird. -- illegal-access könnte auch auf warn oder debug gesetzt werden, um denselben Effekt wie permitzu haben, aber um eine Warnung auszugeben, während warn und Stack-Trace für unzulässige Operationen mit reflektierendem Zugriff verwendet werden, während debugverwendet wird.
Bei der Migration auf Java 17 oder höher ist die Startprogramm-Option -- illegal-access veraltet. Die meisten JDK-Internals wurden inzwischen stark gekapselt. Diese Einschränkung kann zwar nicht empfohlen werden, kann jedoch durch Verwendung der Startprogramm-Option -- add-opens oder des JAR-Manifestattributs zum Öffnen bestimmter Pakete, die von Ihrer Anwendung oder Bibliotheken anderer Anbieter erforderlich sind, übergangen werden.
Zu den kritischen internen APIs, die mit dieser Änderung nicht gekapselt werden, gehören die folgenden:
Das Dienstprogramm generiert eine Ausgabe, in der die Referenzen auf interne JDK-Klassen und empfohlene Ersatz-APIs, sofern möglich, aufgeführt sind.
Anmerkung: Der Befehl jdeps akzeptiert nur .class-Dateien, ein Verzeichnis oder eine JAR-Datei.
Weitere Informationen zum Befehl jdeps finden Sie auf der Referenzseite zu
jdeps.