2014-06-14 68 views
0

我尝试部署与泽西/春/ Hibernate应用程序,每一次我尝试部署其抛出此异常:新泽西+ Spring + Hibernate的

SEVERE: Context initialization failed 
java.lang.NoClassDefFoundError: Lorg/hibernate/cache/CacheProvider; 
at java.lang.Class.getDeclaredFields0(Native Method) 
at java.lang.Class.privateGetDeclaredFields(Class.java:2570) 
at java.lang.Class.getDeclaredFields(Class.java:1903) 
at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.findPersistenceMetadata(PersistenceAnnotationBeanPostProcessor.java:372) 
at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessMerge 
... 

我的春天XML配置是这样的:

<context:component-scan base-package="intellidom.reader"/> 

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
    <property name="url" value="jdbc:mysql://localhost:3306/intellidom" /> 
    <property name="username" value="root" /> 
    <property name="password" value="" /> 
</bean> 

<bean id="sessionFactory" 
     class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSource" /> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.connection.pool_size">0</prop> 
      <prop key="hibernate.show_sql">true</prop> 
      <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop> 
     </props> 
    </property> 
</bean> 

<bean id="transactionManager" 
     class="org.springframework.orm.hibernate3.HibernateTransactionManager"> 
    <property name="sessionFactory" ref="sessionFactory" /> 
</bean> 

当sessionFactory和transactionManager被注释时,部署工作正常。这段代码有什么问题?

编辑: 的pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
<modelVersion>4.0.0</modelVersion> 
<groupId>com.intellidom</groupId> 
<artifactId>IntelliDOM</artifactId> 
<packaging>war</packaging> 
<version>1.0-SNAPSHOT</version> 
<name>IntelliDOM</name> 
<url>http://maven.apache.org</url> 
<dependencies> 

    <!--string parsing--> 
    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-lang3</artifactId> 
     <version>3.0</version> 
    </dependency> 

    <!--Hibernate--> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>4.1.4.FINAL</version> 
    </dependency> 

    <!--MySQL--> 
    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.1.30</version> 
     <scope>runtime</scope> 
    </dependency> 

    <!-- Spring 3 dependencies --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>3.0.5.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-context</artifactId> 
     <version>3.0.5.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>3.0.5.RELEASE</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>3.0.5.RELEASE</version> 
    </dependency> 

    <!--Jersey--> 
    <dependency> 
     <groupId>com.sun.jersey</groupId> 
     <artifactId>jersey-server</artifactId> 
     <version>1.8</version> 
    </dependency> 

    <dependency> 
     <groupId>com.sun.jersey.contribs</groupId> 
     <artifactId>jersey-spring</artifactId> 
     <version>1.8</version> 
     <exclusions> 
      <exclusion> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-core</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-web</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-beans</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>org.springframework</groupId> 
       <artifactId>spring-context</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

</dependencies> 
<build> 
    <finalName>IntelliDOM</finalName> 
</build> 

回答

1

有在Spring 3.0.5对Hibernate 4不支持。您需要使用Hibernate 3或升级Spring版本。你的pom.xml说你正在使用Hibernate 4,但是xml配置是为Hibernate 3. 我相信在Spring 3.1.0中第一次引入了对Hibernate 4的支持。因此,要么更改您的pom.xml以使用Hibernate 3和Spring 3.0.5或Hibernate 4,并且至少使用Spring 3.1.0,并在您的xml配置文件中将所有包更改为hibernate4而不是hibernate3,例如:org.springframework.orm.hibernate4.LocalSessionFactoryBean

+0

Thx很多,它适用于Hibernate 3。 – demageron