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

map*_*aft 6 java war classpath 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服务器时,他们都发现这个类没有问题.

我不希望任何人立刻知道什么是错的,如果有人在此之前看到过这样的事情请分享你的经验,或者如果你有很好的技巧或知道好的工具,真的深入到类路径问题然后请分享.

Sor*_*har 8

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

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

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

希望这可以帮助