Rulaţi unealta de analizor de dependenţă de clase Java (JDeps)

Începând cu Java 8, JDK livrează un utilitar de linie de comandă numit jdeps (analizor dependenţă clasă Java). Comanda jdeps analizează dependenţele claselor şi furnizează parametri suplimentari pentru a semnala pachetele JDK interne. În timp ce WebSphere Migration Tool semnalează majoritatea problemelor de migrare găsite într-o aplicaţie, unealta jdeps poate furniza o detecţie suplimentară a pachetelor JDK interne care nu mai sunt disponibile după migrarea la o nouă versiune Java.

Recomandăm să rulaţi comanda jdeps ca un pas final după rezolvarea problemelor semnalate de WebSphere Migration Tools pentru binare şi sursă. Rulaţi comanda jdeps pe artefactele Java ale aplicaţiei. Pentru a vă asigura de rezultate precise, utilizați comanda jdeps disponibilă în instalarea dumneavoastră JDK țintă planificată, cum ar fi JDK 11, cu parametrul -jdkinternals. De exemplu, după setarea mediului dumneavoastră pentru a utiliza Java 11, rulaţi următoarea comandă:

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

Începând cu Java 9, un efort a început să limiteze accesul la majoritatea internilor JDK. Cu toate acestea, pentru a ajuta cu migrația, această încapsulare puternică a fost oprit în mod implicit pentru API-uri care au existat Java Începând cu Java 16, valoarea implicită a opțiunii de lansator -- acces ilegal mai degrabă setată decât permis neg Deși nu este recomandată, această limitare ar putea fi ocolită în Java 16 prin specificarea -- ilegal-access=permis. -- acces ilegal ar putea fi, de asemenea, setat la Avertizează sau depanare pentru a avea același efect ca permis, dar pentru a emite un mesaj de avertizare în timp ce utilizați Avertizează și stivă pentru operațiuni ilegale de acces reflectorizant în timp ce utilizați depanare.

Când se migrează la Java 17 sau ulterioară, opţiunea de lansator --illegal-access este perimată. Majoritatea internilor JDK sunt acum puternic încapsulaţi. Deși nu este recomandat, această limitare poate fi ocolită prin utilizarea opțiunii de lansator --add-opens sau atributul de manifest JAR Add-Opens pentru a deschide pachete specifice care sunt cerute de aplicația dumneavoastră sau de bibliotecile terță parte.

Unele API-uri interne critice care nu sunt încapsulate de această modificare includ următoarele:

Utilitarul generează o ieşire care identifică referinţele la clasele interne JDK şi furnizează API-urile înlocuitoare, acolo unde este posibil. Notă: Comanda jdeps acceptă doar fişiere .class, un director sau un fişier JAR.

Pentru mai multe informaţii despre comanda jdeps, vedeţi pagina de referinţe jdeps.