java - 当类在 JBoss 6 WAR WEB-INF/classes 文件夹中时出现 NoClassDefFoundError

标签 java classpath war noclassdeffounderror jboss6.x

我的问题是我构建了一个 Web 应用程序并将其作为 WAR 文件部署到 JBoss 6。我的 servlet 无法在我的应用程序中加载类并抛出 NoClassDefFoundError。

我确认这个类存在于 WAR 文件的正确位置。我的所有应用程序类都存在于 WEB-INF/classes 文件夹中,连同我的 servlet 类一起可以顺利执行。事实上,似乎只有这个类不在类路径中,因为应用程序的其他方面运行良好。

JBoss 在 JDK 1.6_21 上运行,该应用程序是使用 JDK 1.6_24 构建的,这应该不是问题吧?

此外,此应用程序在 Eclipse 中本地运行良好,当我将 WAR 文件部署到单独的 Tomcat 7 和 Glassfish 3 服务器时,它们都可以毫无问题地找到此类。

我不希望任何人立即知道哪里出了问题,如果有人之前看到过类似的事情,请分享您的经验,或者如果您有好的技巧或知道真正深入研究类路径问题的好工具,那么请分享。

最佳答案

NoClassDefFoundError 表示类已​​“加载”但无法构建类定义。通常在类的静态初始化出现异常时发生。 我在 AppServers 中不止一次看到日志文件中没有报告静态初始化期间的异常。

检查失败的类的静态 block 和静态属性的初始化是否有潜在的异常原因。

我在 JBoss 和 WebSphere 中看到的另一个原因是 Web 应用程序正在分发一些与应用程序服务器中的库(如 servlet.jar 或其他东西)冲突的库。通常通过删除有问题的库或将类加载机制调整为“父级优先”来解决问题。

希望对你有帮助

关于java - 当类在 JBoss 6 WAR WEB-INF/classes 文件夹中时出现 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5504709/

相关文章:

java - 跳过了 46 帧!应用程序可能在其主线程上做了太多工作

java - 只有两个 int 属性的自定义类的 hashCode 是多少?

java - IntelliJ : How to add all jar files in a folder to classpath

Java - 类存在两次(在类路径和应用程序 jar 上)。链接错误: ClassCastException

java - 将类路径文件名转换为真实文件名

java - 包含 jar 文件和 websphere 共享库 jar 文件的 .war 文件

java - Google Maps API 上的 ZoomControls - 如何将它移动到 ButtonBar 上方?

java - 覆盖 JSTL 中的变量

tomcat - 如何使 Maven 覆盖在 Eclipse/Tomcat "Serve modules without publishing"模式下工作?

ANT war 任务失败并出现奇怪的错误消息