使用Tomcat 9和Java10停止SpringBoot web应用程序时进行非法反射访问

使用Tomcat 9和Java10停止SpringBoot web应用程序时进行非法反射访问,java,spring-boot,java-10,java-module,tomcat9,Java,Spring Boot,Java 10,Java Module,Tomcat9,我正在尝试使用SpringBoot2进行Java10开发,我遇到了一些问题 该应用程序是一个基于SpringBoot2的简单webapp。应用程序启动正常,但当我停止启动时,会收到以下警告: WARNING: An illegal reflective access operation has occurred WARNING: Illegal reflective access by org.apache.catalina.loader.WebappClassLoaderBase (file:

我正在尝试使用SpringBoot2进行Java10开发,我遇到了一些问题

该应用程序是一个基于SpringBoot2的简单webapp。应用程序启动正常,但当我停止启动时,会收到以下警告:

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打开java.base/java.lang=ALL-UNNAMED


有人知道我为什么会收到此消息吗?

要使这些警告静音,您需要在启动脚本中使用以下选项:

--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
正如你在照片中看到的

这些警告的修复程序包括:

是否有计划在将来的版本中解决这些问题

现在不行

我们将尽可能长时间保持明确的清理。一旦 被永久封锁了我们可能不得不依靠这样一个事实 有问题的地图使用WeakReference并等待GC清除 参考资料。这将使追踪真正的内存泄漏变得更加困难 因此,我们必须看看能否说服JRE团队提供一些建议 如果/当我们达到这一点时,某种替代API


在运行springboot devtools livereload时,当我试图重建项目以更新类路径时,我得到了完全相同的错误@空指针,不。这不是重复的。@Onomosotu您能解释一下,这怎么不是链接的另一个问题的重复?也可以使用
--add opens java.base/java.io=ALL-UNNAMED