java - Tomcat 类加载器不工作

标签 java tomcat tomcat7 classloader

我需要你的帮助。我在处理 Tomcat 类加载器时遇到了不寻常的问题。我有一个 WAR,在 WAR 中有一个具有本地方法的第三方 JAR。 WAR首次在开发服务器部署成功,运行了3个月左右。

上周,我做了一些代码重构,想部署更新的WAR,所以我删除了旧实例并部署了WAR。但是现在重新部署之后,老是面临NoClassDefFoundError。我重新部署了几次WAR,结果都是一样的,NoClassDefFoundError。

奇怪的是,当我在我的笔记本电脑中部署更新的 WAR 时也使用 Tomcat,它工作正常。我的同事也尝试使用 Tomcat 在他的笔记本电脑上部署,它工作正常。

我已经删除了工作目录中的文件,但仍然出现 NoClassDefFoundError。我关闭了 Tomcat,删除了 webapp 文件夹中的实例,再次将更新后的 WAR 复制到 webapp 文件夹中,再次打开 Tomcat,但仍然出现错误。

开发服务器的Tomcat有什么问题?

最佳答案

在 JVM 的生命周期中,您只能注册一次 native 库。我怀疑当您更新 WAR 时,它尝试再次注册 native 库,但失败了,进而导致 NoClassDefFoundError。重启 Tomcat 服务器即可修复,符合这一理论。

如果您发布包含 native 库的 WAR,那么最安全的做法是每次需要更新应用程序时重新启动 Tomcat。

关于java - Tomcat 类加载器不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19130972/

相关文章:

java - Tomcat 7 偶然 NoClassDefFoundError cxf BaseUrlHelper

java - 尝试打印出 ArrayList 的内容

Java ProcessBuilder.start(Tomcat7.exe) 启动进程但它挂起帮助吗?

java - 刷新文本/JLabel 值

java - 本地主机 tomcat 中的安全连接无法正常工作

tomcat - 在没有插件 web.xml 问题的情况下配置 Spring Security

apache - 使用 Apache/Tomcat + 虚拟主机部署多个 grails 应用程序

eclipse - 如何手动安装/配置或设置 tomcat 7?

java - GXT FileUploadField 的按键事件

java - 如何从预先确定的目录(按文件名)复制给定文件