Незаконный отражающий Доступ со стороны организации.springframework.cglib.ядро.ReflectUtils$1

мой JDK 9+181 Весенняя загрузка 2.0.0.Приложение CLI BUILD-SNAPSHOT отображает это предупреждение при запуске:

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.springframework.cglib.core.ReflectUtils (jar:file:/home/jan/src/fm-cli/target/fm-cli-0.1.0-SNAPSHOT.jar!/BOOT-INF/lib/spring-core-5.0.0.RELEASE.jar!/) to method java.lang.ClassLoader.defineClass(java.lang.String,byte[],int,int,java.security.ProtectionDomain)
WARNING: Please consider reporting this to the maintainers of org.springframework.cglib.core.ReflectUtils

это консольное приложение, поэтому мне нужно, чтобы отключить это предупреждение -- как я могу это сделать?

Примечание: этот вопрос задает конкретный вопрос о том, как отключить это предупреждение, вызванное весной; это не дубликат JDK9: незаконная отражательная операция доступа произошла. орг.питон.ядро.PySystemState какие предложения с похожим симптомом в другой библиотеке.

4 ответов


в JDK 9+ добавьте следующую опцию в JVM, чтобы отключить предупреждение от использования Spring CGLIB:

--add-opens java.base/java.lang=ALL-UNNAMED

например:

java --add-opens java.base/java.lang=ALL-UNNAMED -jar target/*.jar

нет необходимости сообщать об этом; это известная весенняя ошибка.

это происходит потому, что новая модульная система JDK 9 обнаружила незаконный доступ, который будет запрещен когда-нибудь в (ближайшем) будущем. Вы можете прочитать больше о модульная система JDK 9 вот!--8-->.

обновление:

исправление этой проблемы доступно JDK 9+ С Spring 5.1+.


добавление к ответу Яна Нильсена выше, если вы используете Intellij и Spring Boot 2.0.3, который зависит от Spring core 5.0.7, вы все еще застряли и не имеете исправления.

выход для меня требовал двух вещей:

  • добавить --add-opens упомянуто Яном в вашей конфигурации запуска / отладки. Просто отредактируйте конфигурацию и посмотрите параметры среды / VM. Это заботится о замалчиванием одних "неправомерный доступ сообщения."

  • Мне также нужно было добавить зависимость к jaxb-api библиотека. Я получил подсказку от комментария ValentinBossi этой весной выпуск github.


при использовании инициализатора spring убедитесь, что вы используете последнюю версию Spring Boot. Он автоматически получает Spring core 5.1 или выше для вас, и вы не увидите ошибку при запуске проекта.

поэтому вам не нужно беспокоиться о редактировании любой конфигурации JVM.


после этих предупреждений, если ваше приложение все еще не работает, то добавьте эту зависимость В пом.в XML

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
</dependency>

это помогло мне!!