Tim*_*sch 10 java tomcat classcastexception
我正在使用 Eclipse 2022-06 和 Tomcat 10.0.10。
通常,当关闭 Eclipse 中运行的 Tomcat 时,我会得到
WARNUNG: Failed to clear soft references from ObjectStreamClass$Caches for web application [ROOT]
java.lang.ClassCastException: class java.io.ObjectStreamClass$Caches$1 cannot be cast to class java.util.Map (java.io.ObjectStreamClass$Caches$1 and java.util.Map are in module java.base of loader 'bootstrap')
at org.apache.catalina.loader.WebappClassLoaderBase.clearCache(WebappClassLoaderBase.java:2363)
Run Code Online (Sandbox Code Playgroud)
...
我发现了这个问题,但它并不真正适用:它是一个不同的类(映射而不是字符串),并且我找不到名为“SESSIONS.ser”的文件。我还已经从实际的 Web 服务部分中删除了所有内容(因此代码什么也不做)。我只是还没有开始删除所有可能自动加载的链接的 jar 文件。
有没有办法找出哪个类真正导致了问题?
顺便说一句,如果通过将 WAR 文件部署到 Eclipse 外部的 Tomcat 安装中,我无法重现日志中的错误。我不确定这是否意味着它没有出现。
小智 10
升级IDE后我也遇到了同样的问题。
比较了两个 tomcat 日志后,我发现使用了 2 个不同的 jvm。确实我已经升级了jdk和ide!
jvm11.0.16 出现该问题,jvm11.0.11 也不例外,即使在最新的 ide 版本上也是如此。
这是解释,但是保留旧 jvm 的解决方案可能不是很好......
所以我将Tomcat 升级到最新版本(我的例子是 8.5.82),它解决了问题。我猜这是由于这个功能(参见tomcat变更日志):
在包含底层内存泄漏修复的 JRE 上运行时,禁用由 Context 属性clearReferencesObjectStreamClassCaches 启用的内存泄漏校正代码。(市场)
| 归档时间: |
|
| 查看次数: |
14247 次 |
| 最近记录: |