Нелегальный рефлексивный доступ при остановке веб-приложения SpringBoot с Tomcat 9 и Java10 - PullRequest
0 голосов
/ 05 сентября 2018

Я пробую разработку Java 10 с Spring Boot 2, и у меня возникают некоторые проблемы.

Приложение представляет собой простое веб-приложение, основанное на Spring Boot 2. Запуск приложения в порядке, но когда я его прекращаю, я получаю следующее предупреждение:

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.catalina.loader.WebappClassLoaderBase (file:/C:/Users/CS/.m2/repository/org/apache/tomcat/embed/tomcat-embed-core/9.0.11/tomcat-embed-core-9.0.11.jar) to field java.io.ObjectStreamClass$Caches.localDescs
WARNING: Please consider reporting this to the maintainers of org.apache.catalina.loader.WebappClassLoaderBase
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

Как вы видите, я уже переключаю встроенный сервер Tomcat с версии 8 на 9.0.11, чтобы он соответствовал модульной системе Java. И приложение запускается с опцией --add-opens java.base/java.lang=ALL-UNNAMED

Кто-нибудь знает, почему я получаю это сообщение?

1 Ответ

0 голосов
/ 30 октября 2018

Чтобы отключить эти предупреждения, вам понадобятся следующие опции в вашем скрипте запуска:

--add-opens=java.base/java.lang=ALL-UNNAMED
--add-opens=java.base/java.io=ALL-UNNAMED
--add-opens=java.rmi/sun.rmi.transport=ALL-UNNAMED

как вы можете видеть в Tomcat 9 скрипт запуска .

Исправления для предупреждений вряд ли будут устранены в ближайшее время :

Планируется ли решить эти проблемы в будущем выпуске?

Не сейчас.

Мы будем сохранять явную очистку на месте так долго, как сможем. Однажды это навсегда заблокирован, мы, вероятно, должны полагаться на тот факт, что Карты, о которых идет речь, используют WeakReference и ждут, пока GC очистит Рекомендации. Это затруднит поиск подлинных утечек памяти так что нам придется посмотреть, сможем ли мы убедить команду JRE предоставить своего рода замена API, если / когда мы достигнем этой точки.

...