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

时间:2011-03-31 18:43:45

标签: 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服务器时,他们都发现这个类没有问题。

我不希望任何人立即知道什么是错的,如果有人在此之前看到过这样的事情,那么请分享一下你的经历,或者如果你有很好的技巧或知道好的工具,那真的要深入到类路径问题那么请份额。

1 个答案:

答案 0 :(得分:8)

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

检查静态块和初始化类的静态属性,这些属性因潜在的异常原因而失败。

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

希望这会有所帮助