2013-02-04 6 views
6

Ich verwende Hibernate mit Frühling in meinem Maven-Projekt. Das ist meine POM DateiAufruf der Init-Methode fehlgeschlagen; verschachtelte Ausnahme ist java.lang.NoClassDefFoundError: org/hibernate/util/DTDEntityResolver

<?xml version="1.0" encoding="UTF-8"?> 
<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>org.mod.com</groupId> 
    <artifactId>Services</artifactId> 
    <version>1.0.0-SNAPSHOT</version> 
    <packaging>war</packaging> 
    <name>Services</name> 
    <url>http://maven.apache.org</url> 

    <properties> 
     <maven.test.failure.ignore>true</maven.test.failure.ignore> 
     <spring.framework.version>3.1.3.RELEASE</spring.framework.version> 
     <hibernate.version>4.1.1.Final</hibernate.version> 
     <sl4j.version>1.5.6</sl4j.version> 
    </properties> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-compiler-plugin</artifactId> 
       <configuration> 
        <source>1.6</source> 
        <target>1.6</target> 
       </configuration> 
      </plugin> 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-eclipse-plugin</artifactId> 
       <version>2.8</version> 
       <configuration> 
        <downloadSources>true</downloadSources> 
        <downloadJavadocs>true</downloadJavadocs> 
        <sourceIncludes> 
         <sourceInclude>**/*.*</sourceInclude> 
        </sourceIncludes> 
       </configuration> 
      </plugin> 
      <!-- Configuration which allows JUnit tests to be placed in the same folder as java files 
      <plugin> 
       <groupId>org.apache.maven.plugins</groupId> 
       <artifactId>maven-surefire-plugin</artifactId> 
       <configuration> 
        <testSourceDirectory>${basedir}/src/main/java/</testSourceDirectory> 
        <testClassesDirectory>${project.build.directory}/classes/</testClassesDirectory> 
       </configuration> 
      </plugin> --> 
     </plugins> 
     <!-- Configuration which allows configuration files (such as xml files) to be placed in the same folder as java files 
     <resources> 
      <resource> 
      <directory>${basedir}/src/main/java/</directory> 
      </resource> 
     </resources> --> 
    </build> 


    <dependencies> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>2.5</version> 
      <scope>provided</scope> 
     </dependency> 
     <!-- <dependency> 
      <groupId>javax.servlet.jsp</groupId> 
      <artifactId>jsp-api</artifactId> 
      <version>2.1</version> 
      <scope>provided</scope> 
     </dependency> 
     ********************************************************************** 
     ** SPRING DEPENDENCIES ** 
     ********************************************************************** --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aop</artifactId> 
      <version>${spring.framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-aspects</artifactId> 
      <version>${spring.framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-beans</artifactId> 
      <version>${spring.framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>${spring.framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context-support</artifactId> 
      <version>${spring.framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-core</artifactId> 
      <version>${spring.framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-expression</artifactId> 
      <version>${spring.framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-instrument</artifactId> 
      <version>${spring.framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-instrument-tomcat</artifactId> 
      <version>${spring.framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-jdbc</artifactId> 
      <version>${spring.framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-jms</artifactId> 
      <version>${spring.framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>${spring.framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-oxm</artifactId> 
      <version>${spring.framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-struts</artifactId> 
      <version>${spring.framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>${spring.framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-web</artifactId> 
      <version>${spring.framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${spring.framework.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc-portlet</artifactId> 
      <version>${spring.framework.version}</version> 
     </dependency> 

     <!-- ********************************************************************** 
     ** POSTGRES DEPENDENCIES ** 
     ********************************************************************** --> 
     <dependency> 
       <groupId>postgresql</groupId> 
       <artifactId>postgresql</artifactId> 
       <version>8.3-603.jdbc4</version> 
     </dependency> 

     <!-- ********************************************************************** 
     ** HIBERNATE DEPENDENCIES ** 
     ********************************************************************** --> 

     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>${hibernate.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-annotations</artifactId> 
      <version>3.5.6-Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>${hibernate.version}</version> 
     </dependency> 

     <!-- ********************************************************************** 
     ** JAVAX PERSISTENCE ** 
     ********************************************************************** --> 
     <!-- <dependency> 
      <groupId>org.eclipse.persistence</groupId> 
      <artifactId>javax.persistence</artifactId> 
      <version>${javax.persistence.version}</version> 
     </dependency> --> 

     <!-- ********************************************************************** 
     ** OTHER DEPENDENCIES ** 
     ********************************************************************** -->  
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-jcl</artifactId> 
      <version>${sl4j.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>${sl4j.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>javax.transaction</groupId> 
      <artifactId>jta</artifactId> 
      <version>1.1</version> 
     </dependency> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.16</version> 
     </dependency> 
     <dependency> 
      <groupId>cglib</groupId> 
      <artifactId>cglib</artifactId> 
      <version>2.2.2</version> 
      <scope>runtime</scope> 
     </dependency> 

     <!-- ********************************************************************** 
     ** TEST DEPENDENCIES 
     ** ********************************************************************** --> 

     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.10</version> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-test</artifactId> 
      <version>${spring.framework.version}</version> 
     </dependency> 

    </dependencies> 
</project> 

Das ist meine DAO-Klasse ist

public class Task_Impl implements Task_Interface { 

    @Autowired 
    SessionFactory sessionfactory; 
    @Override 
    @Transactional 
    public void createTask(Task task) { 
     // TODO Auto-generated method stub 
     sessionfactory.getCurrentSession().save(task); 
     System.out.println("Task created in database"); 


    } 

    @Override 
    public void deleteTask() { 
     // TODO Auto-generated method stub 

    } 

} 

Das ist mein Dispatcher Servlet (HelloWeb-servlet.xml)

xmlns:ehcache="http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring" 

    xsi:schemaLocation=" 
    http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd 
    http://www.springframework.org/schema/mvc 
    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 
    http://www.springframework.org/schema/tx 
    http://www.springframework.org/schema/tx/spring-tx-3.1.xsd 
    http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring 
    http://ehcache-spring-annotations.googlecode.com/svn/schema/ehcache-spring/ehcache-spring-1.1.xsd"> 


<context:component-scan base-package="org.mod.com.Prime"/> 
<mvc:annotation-driven/> 

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
    <property name="prefix" value="/WEB-INF/jsp/"></property> 
    <property name="suffix" value=".jsp"></property> 
</bean> 
<bean id="task_impl_bean" class="org.mod.Prime.DAO.Implementation.Task_Impl"> 

</bean> 

<bean id="sessionfactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSourceBean"></property> 
    <property name="annotatedClasses" value="org.mod.Prime.Data.Task"></property> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop> 
      <prop key="hibernate.show_sql">true</prop> 
     </props> 
    </property> 
</bean> 

<bean id="dataSourceBean" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="org.postgresql.Driver"/> 
    <property name="url" value="jdbc:postgresql://localhost:5432/newdatabase"/> 
    <property name="username" value="postgres"/> 
    <property name="password" value="[email protected]"/> 
</bean> 

<tx:annotation-driven transaction-manager="txManager"/> 

    <bean id="txManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager"> 
    <property name="sessionfactory"> 
     <ref local="sessionfactory"/> 
    </property> 
    </bean> 

Wenn ich versuche, das Projekt auszuführen , Erhalte ich den folgenden Fehler

Error creating bean with name 'task_impl_bean': Injection of autowired dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: org.hibernate.SessionFactory org.mod.Prime.DAO.Implementation.Task_Impl.sessionfactory; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionfactory' defined in ServletContext resource [/WEB-INF/HelloWeb-servlet.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/util/DTDEntityResolver 

Die Haupt Ursache ist

Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/util/DTDEntityResolver 

Wie Sie in meinem pom-Datei sehen Ich habe die Hibernate-Gläser enthalten. Ich weiß nicht, was genau der Fehler ist. Könnte mir jemand helfen? Vielen Dank im Voraus

+0

Wow, das ist eine Menge Code. Haben Sie das Problem überhaupt eingegrenzt? Wenn möglich, sollten Sie die Code-Snippets nur für relevante Teile konsolidieren und Ihren Fehler sowie alles, was Sie getan haben, um das Problem zu ermitteln, besser erklären. Die Community kann Ihre Frage andernfalls schließen. –

+0

Ich bin neu in stackoverflow. Ich habe jetzt meinen Code –

Antwort

1

Versuchen Sie, die dataSourceBean vor der session

<bean id="dataSourceBean" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="org.postgresql.Driver"/> 
    <property name="url" value="jdbc:postgresql://localhost:5432/newdatabase"/> 
    <property name="username" value="postgres"/> 
    <property name="password" value="[email protected]"/> 
</bean> 

<bean id="sessionfactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"> 
    <property name="dataSource" ref="dataSourceBean"></property> 
    <property name="annotatedClasses" value="org.mod.Prime.Data.Task"></property> 
    <property name="hibernateProperties"> 
     <props> 
      <prop key="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</prop> 
      <prop key="hibernate.show_sql">true</prop> 
     </props> 
    </property> 
</bean> 
+0

konsolidiert Das hat nicht funktioniert :( –

1

Dies ist dynamischer Laden von Klassen während Bean init zu erklären! Die DTD-Entität Resolver wird beim Analysieren der Spring Bean-Klasse beim Laden in den Container verwendet. Ich denke, die Version Ihres Hibernate ist nicht kompatibel mit Ihrem Framework und Code! Warum verwenden Sie eine andere Hibernate-Annotations-Version?

Sind Sie sicher, dass Ihre Hibernate-Version mit Ihrem Spring-Framework kompatibel ist? Versuchen Sie, die Versionen zu ändern, überprüfen Sie auch Ihre JVM-Version, die Sie zum Ausführen des Spring-Servers verwenden!

Verwandte Themen