部署的Tomcat 7 WAR应用程序抛出NoClassDefFoundError错误

时间:2011-01-18 21:20:39

标签: web-applications maven-2 classpath noclassdeffounderror tomcat7

我正在研究一种hello-world类型的Web应用程序。我使用Eclipse Helios作为我的IDE,使用Maven 2处理依赖项,使用本地运行的Tomcat 7服务器进行部署和测试。该应用程序基于Spring MVC,并使用Hibernate进行数据管理。

我可以成功将项目打包成WAR文件。当我在Tomcat中部署WAR时,日志中会报告以下错误:

  

严重:上下文初始化失败

     

org.springframework.beans.factory.BeanCreationException:   使用名称创建bean时出错   'hibernateSessionFactory'中的定义   ServletContext资源   [/WEB-INF/spring-servlet.xml]:   调用init方法失败;   嵌套异常是   java.lang.NoClassDefFoundError:可以   没有初始化类   org.hibernate.cfg.AnnotationConfiguration     在

     

org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1338)     在   org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:473)     在   org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory $ 1.run(AbstractAutowireCapableBeanFactory.java:409)等...

我检查过以确保我的POM中包含正确的依赖项,它是:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-annotations</artifactId>
    <version>3.4.0.GA</version>
    <type>jar</type>
    <optional>false</optional>
</dependency>

我检查了打包的WAR文件是否包含所需的JAR文件,其中包含错误中提到的类(org.hibernate.cfg.AnnotationConfiguration),它确实:

  

./ Tomcat 7 / webapps / helloworld / WEB-INF / lib / hibernate-annotations-3.4.0.GA.jar

根据这些信息,我认为这可能是类路径配置问题。从我在Tomcat 7上阅读的文档中,Tomcat应该能够利用“/ WEB-INF / lib”文件夹中的JAR文件。任何人都知道我是否跳过配置Tomcat的步骤,以便识别webapp的lib文件夹中的JAR文件?

1 个答案:

答案 0 :(得分:3)

我意识到这是通用的建议,但我过去曾经遇到类似的问题,包括Tomcat和Jetty,这是因为我有一些依赖的多个/错误版本。我首先在Eclipse中使用M2Eclipse POM编辑器,然后单击“Dependency Hierarchy”并仔细查看所有传递依赖项。