1

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

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

严重:上下文初始化失败

org.springframework.beans.factory.BeanCreationException:创建 ServletContext 资源 [/WEB-INF/spring-servlet.xml] 中定义的名称为“hibernateSessionFactory”的 bean 时出错:调用 init 方法失败;嵌套异常是 java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.cfg.AnnotationConfiguration at

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 文件?

4

1 回答 1

3

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

于 2011-01-24T16:06:22.270 回答