我正在研究一种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文件?
答案 0 :(得分:3)
我意识到这是通用的建议,但我过去曾经遇到类似的问题,包括Tomcat和Jetty,这是因为我有一些依赖的多个/错误版本。我首先在Eclipse中使用M2Eclipse POM编辑器,然后单击“Dependency Hierarchy”并仔细查看所有传递依赖项。