Помимо понимания доступа между модулями и их соответствующими пакетами. Я полагаю, что суть этого заключается в модульной системе # Relaxed-strong-encapsulation , и я бы просто выбрал соответствующие части, чтобы попытаться ответить на вопрос.
Что определяет нелегальный рефлексивный доступ и какие обстоятельства
вызвать предупреждение?
Для облегчения перехода на Java9 сильная инкапсуляция модулей может быть ослаблена.
Реализация может обеспечивать статический доступ , т. Е. Скомпилированным байт-кодом.
Может предоставить средство для вызова своей системы времени выполнения с одним или несколькими пакетами одного или нескольких из его модулей, открытых для кода в всех неназванных модулей , то есть для кодирования на пути к классам. Если во время выполнения система вызывается таким образом, и если при этом некоторые вызовы API-интерфейсов отражения выполняются успешно, то в противном случае они бы потерпели неудачу.
В таких случаях вы фактически сделали отражающий доступ , который "незаконен" , так как в чисто модульном мире вам не предназначались такие доступы.
Как все это сочетается и что вызывает предупреждение в чем
сценарий
Это ослабление инкапсуляции контролируется во время выполнения новой опцией запуска --illegal-access
, которая по умолчанию в Java9 равна permit
. Режим permit
обеспечивает
Первая операция отраженного доступа к любому такому пакету вызывает
предупреждение должно быть выдано, но после этого момента предупреждения не выдаются.
Это единственное предупреждение описывает, как включить дальнейшие предупреждения. это
предупреждение не может быть подавлено.
Режимы конфигурируются со значениями debug
(сообщение, а также трассировка стека для каждого такого доступа), warn
(сообщение для каждого такого доступа) и deny
(отключает такие операции).
Мало что можно отладить и исправить в приложениях: -
Вопросы для такого примера предупреждения: = JDK9: Произошла недопустимая операция доступа с отражением. org.python.core.PySystemState
Последнее и важное замечание, пытаясь гарантировать, что вы не столкнетесь с такими предупреждениями и будете в безопасности в будущем, все, что вам нужно сделать, - это убедиться, что ваши модули не осуществляют эти незаконные рефлексивные доступы. :)