2013-02-04 14 views
6

Tôi đang sử dụng ngủ đông với mùa xuân trong dự án maven của tôi. Đây là tập tin POM tôiGọi phương thức init không thành công; ngoại lệ lồng nhau là 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> 

Đây là lớp DAO tôi

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 

    } 

} 

Đây là tôi 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> 

Khi tôi cố gắng chạy dự án , Tôi nhận được lỗi sau đây

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 

Nguyên nhân gốc chính là

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

Như bạn có thể thấy trong tệp pom của tôi, tôi đã bao gồm các lọ ngủ đông. Tôi không biết lỗi chính xác là gì. Có ai có thể giúp tôi không? Cảm ơn trước

+0

Ồ, đây là rất nhiều mã. Bạn đã thu hẹp vấn đề chưa? Nếu có thể, hãy hợp nhất các đoạn mã chỉ với các phần có liên quan và giải thích rõ hơn về lỗi của bạn, cũng như bất kỳ lỗi nào bạn đã thực hiện để xác định vấn đề. Cộng đồng có thể đóng câu hỏi của bạn theo cách khác. –

+0

Tôi mới dùng stackoverflow. Bây giờ tôi đã hợp nhất mã của tôi –

Trả lời

1

Cố gắng bố dataSourceBean trước sessionfactory

<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

Điều đó đã không làm việc: ( –

1

Đây là động lớp tải trong khi Bean init! Thực thể DTD Resolver được sử dụng trong khi phân tích cú pháp lớp Spring Bean trong khi tải vào thùng chứa. Tôi nghĩ rằng phiên bản Hibernate của bạn không tương thích với khung và mã của bạn! Tại sao bạn sử dụng phiên bản chú thích ngủ đông khác nhau?

 <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-annotations</artifactId> 
      <version>3.5.6-Final</version> 
     </dependency> 

Bạn có chắc chắn rằng phiên bản Hibernate của bạn tương thích với khung Spring? Hãy thử thay đổi các phiên bản, cũng kiểm tra phiên bản JVM bạn đang sử dụng để chạy máy chủ Spring!

Các vấn đề liên quan