В Java 8 и более поздних версиях JDK поставляется с утилитой командной строки jdeps (анализатором зависимостей классов Java).
Команда jdeps анализирует зависимости классов и предоставляет
дополнительные параметры, позволяющие отметить внутренние пакеты JDK.
Хотя
WebSphere Migration Tool находит большинство проблем миграции в приложении,
инструмент jdeps полезен для более точного обнаружения внутренних
пакетов JDK, которые станут недоступны после миграции на новую версию Java.
Команду jdeps рекомендуется запускать после устранения проблем,
найденных инструментом WebSphere Migration Tool для исходного или двоичного
кода. Обработайте артефакты Java приложения с помощью команды jdeps.
Для получения наиболее полных результатов используйте команду jdeps из планового целевого выпуска JDK, например JDK 11, указав параметр
-jdkinternals. Например, настройте среду для использования Java 11 и вызовите следующую команду:
Начиная с версии Java 9 предпринимаются усилия по ограничению доступа к большинству внутренних элементов JDK. Однако для поддержки миграции эта сильная инкапсуляция была отключилась по умолчанию для API, существовавших в Java 8. Начиная с Java 16, для опции запуска -- незаконный-доступ по умолчанию задано значение Отрицание , а не разрешение. Хотя это ограничение не рекомендуется, это ограничение можно обойти в Java 16, указав
-- illegal-access=permy. -- lacny-access может также иметь значение warn
или debug , чтобы иметь тот же эффект, что и permy, но при использовании warn и трассировки стека для незаконных операций с отражательным доступом при использовании debug.
При миграции на Java 17 и более новые версии опция --illegal-access будет считаться устаревшей. Большинство внутренних элементов JDK теперь
имеют строгую инкапсуляцию. Хотя это не рекомендуется, данное ограничение можно обойти, указав опцию запуска --add-opens или атрибут Add-Opens
в манифесте JAR, чтобы открывать отдельные пакеты, требуемые вашим приложением или сторонними библиотеками.
Хотя некоторые наиболее важные внутренние API не инкапсулированы, это изменение затрагивает следующее:
В выводе утилиты будут указаны ссылки на внутренние классы JDK и те API, на
которые их рекомендуется заменить (при наличии).
Примечание: на вход команды jdeps можно передавать только файлы .class, каталог или файл JAR.
За дополнительной информацией о команде jdeps обратитесь на
страницу справки по jdeps.