При использовании параметра --illegal-access = deny в параметрах компиляции в Java 11 появляется сообщение об ошибке «Недопустимый флаг». - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь понять, почему я получаю «ПРЕДУПРЕЖДЕНИЕ. Произошла недопустимая операция доступа с отражением» Я хочу избавиться от этих предупреждений перед тем, как сначала я хочу проверить, как в действительности это происходит в моем коде. Потому что я прочитал, что

"Первая операция отражающего доступа к любому такому пакету вызывает выдачу предупреждения, но после этого момента предупреждения не выдаются. Это единственное предупреждение описывает, как включить дополнительные предупреждения. Это предупреждение не может быть подавлено."

Итак, чтобы получить дополнительные предупреждения

Итак, я упомянул --illegal-access = deny вместе с опциями --add-exports в IntelliJ.

<option name="ADDITIONAL_OPTIONS_OVERRIDE">
  <module name="XXX" options="--illegal-access=deny --add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED" />
</option>

Тогда я получил сообщение об ошибке: Java: ошибка: недопустимый флаг: --illegal-access = deny

Это предупреждения

WARNING: Illegal reflective access by com.thoughtworks.xstream.core.util.Fields (file:xxx/xxx/xxx/xstream-1.4.10.jar) to field java.util.TreeMap.comparator 
WARNING: Please consider reporting this to the maintainers of com.thoughtworks.xstream.core.util.Fields 
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations

1 Ответ

0 голосов
/ 22 января 2019

Отражающий доступ происходит во время выполнения, поэтому нет способа обнаружить его во время компиляции.Если вы хотите избавиться от предупреждения, вы можете добавить параметр командной строки --add-opens в свою конфигурацию запуска:

--add-opens=java.base/sun.net.www.protocol.http=ALL-UNNAMED

--add-opens делает пакет sun.net.www.protocol.http доступным во время выполнения без предупреждений.

Однако я рекомендую не использовать эту опцию, а вместо этого выяснить, почему происходит этот незаконный отражающий доступ, и попытаться устранить его.

...