Î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ă:
Î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.