我正在尝试使用Spring Boot 2开发Java 10,但遇到一些问题。
该应用程序是一个基于Spring Boot 2的简单Web应用程序。应用程序启动正常,但是当我停止它时,出现以下警告:
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
有人知道我为什么收到此消息吗?
答案 0 :(得分:5)
要使这些警告静音,您将在启动脚本中需要以下选项:
--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 startup script中所见。
警告的解决方法是not likely to be addressed anytime soon:
有计划在将来的版本中解决这些问题吗?
暂时没有。
我们将尽一切可能保持明确的清除。一旦它 被永久阻止,我们可能不得不依靠以下事实: 有问题的地图使用WeakReference并等待GC清除 参考。这将使追踪真正的内存泄漏更加困难 所以我们必须看看我们能否说服JRE团队提供一些 当/到达这一点时,将提供一种替代API。