Počínaje verzí Java 8 je sada JDK dodávána s obslužný programem příkazového řádku s názvem jdeps (analyzátor závislostí tříd Java).
Příkaz jdeps analyzuje závislosti tříd a poskytuje další parametry pro označení vnitřních balíků JDK příznakem.
Zatímco nástroj pro migraci WebSphere označí příznakem většinu nalezených problémů s migrací v aplikaci,
nástroj jdeps může poskytnout dodatečnou detekci vnitřních balíků JDK, které nejsou nadále dostupné po migraci
na novější verzi jazyky Java.
Příkaz jdeps doporučujeme spustit jako poslední krok po vyřešení problémů označených příznakem od binárních nebo zdrojových
nástrojů pro migraci WebSphere. Spusťte příkaz jdeps vůči artefaktům Java aplikace.
Chcete-li zajistit přesné výsledky, použijte příkaz jdeps, který je k dispozici v plánované cílové instalaci sady JDK, např. v sadě JDK 11, společně s
parametrem -jdkinternals. Například po nastavení prostředí, aby používalo jazyk Java 11, spusťte tento příkaz:
Počínaje verzí Java 9 se začalo usilovat o omezení přístupu ke většině interních částí JDK. Pro podporu migrace byla však tato silná zapouzdření standardně vypnuta pro rozhraní API, která existovala v prostředí Java 8. Počínaje verzí Java 16 je výchozí hodnota volby spouštěcího programu -- illegal-access nastavena na hodnotu deny , nikoli na permit. Přestože toto omezení nebylo doporučeno, mohlo být v Java 16 vynecháno zadání -- illegal-access=povolení. Příkaz -- nepřípustný-přístup by také mohl být nastaven na varovat nebo ladit , aby měl stejný účinek jako povolit, ale při použití varovat a trasování zásobníku pro nepovolené operace reflexního přístupu a trasování zásobníku pro nepovolené operace reflexního přístupu a trasování zásobníku pomocí ladit.
Při migraci na prostředí Java 17 nebo novější je volba spouštěcího programu --illegal-access zastaralá. Většina interních částí JDK je nyní silně zapouzdřena. I když se to nedoporučuje, toto omezení lze obejít použitím volby spouštěcího programu --add-opens nebo atributu Add-Opens souboru typu manifest JAR k otevření specifických balíků, které vaše aplikace nebo knihovny třetích stran vyžadují.
Určitá kritická interní rozhraní API, která nejsou zapouzdřena touto změnou, zahrnují následující:
Obslužný program vygeneruje výstup, který identifikuje odkazy na vnitřní třídy JDK a poskytne navrhovaná
náhradní rozhraní API, kde je to možné.
Poznámka: příkaz jdeps přijímá pouze soubory .class, adresář nebo soubor JAR.
Další informace o příkazu jdeps naleznete na
stránce odkazů jdeps.