wake-up-neo.net

Wie kann ich Java.lang.ClassNotFoundException: org.hibernate.util.DTDEntityResolver beheben, wenn Sie Spring 3.1 mit Hibernate 4.0.1 verwenden?

Ich habe vor kurzem ein Upgrade auf Hibernate 4.0.1.Final durchgeführt und erhalte folgende Fehlermeldung beim Kontextstart

Caused by: Java.lang.NoClassDefFoundError: org/hibernate/util/DTDEntityResolver
    at Java.lang.ClassLoader.defineClass1(Native Method)
    at Java.lang.ClassLoader.defineClass(ClassLoader.Java:791)
    at Java.security.SecureClassLoader.defineClass(SecureClassLoader.Java:142)
    at org.Apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.Java:2823)
    at org.Apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.Java:1160)
    at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1655)
    at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1533)
    at org.hibernate.cfg.Configuration.reset(Configuration.Java:322)
    at org.hibernate.cfg.Configuration.<init>(Configuration.Java:261)
    at org.hibernate.cfg.Configuration.<init>(Configuration.Java:265)
    at org.hibernate.ejb.Ejb3Configuration.<clinit>(Ejb3Configuration.Java:150)
    at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.Java:71)
    at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.Java:257)
    at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.Java:310)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.Java:1514)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.Java:1452)
    ... 65 more
Caused by: Java.lang.ClassNotFoundException: org.hibernate.util.DTDEntityResolver
    at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1688)
    at org.Apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.Java:1533)

Meine Konfiguration ist wie folgt:

<!-- Holding Properties for hibernate -->
    <context:property-placeholder location="classpath:hibernate.properties"/>

    <!-- Configure annotated beans -->
    <context:annotation-config />
    <context:component-scan base-package="com.mypackage" />

    <!-- Drives transactions using local JPA APIs -->
    <tx:annotation-driven transaction-manager="transactionManager"/>
    <bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"
        p:entityManagerFactory-ref="entityManagerFactory"/>

    <!-- Creates a EntityManagerFactory for use with the Hibernate JPA provider -->
    <bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"
        p:dataSource-ref="dataSource"
        p:packagesToScan="com.mypackage.entity"
        p:jpaVendorAdapter-ref="jpaAdapter"/>

    <bean id="jpaAdapter" class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"
                p:showSql="true"
                p:generateDdl="false"
                p:database="MYSQL"
                p:databasePlatform="org.hibernate.dialect.MySQL5InnoDBDialect" />

    <!-- Deploys datasource-->
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"
        p:driverClassName="com.mysql.jdbc.Driver"
        p:url="jdbc:mysql://localhost:${mysql.port}/?zeroDateTimeBehavior=convertToNull"
        p:username="bla"
        p:password="bla123"/>

    <bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

    <bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor" />

Einige der Abhängigkeiten sind:

    <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>
        <exclusions>
            <exclusion>
                <groupId>org.hibernate</groupId>
                <artifactId>ejb3-persistence</artifactId>                    
            </exclusion>
            <exclusion>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-core</artifactId>                  
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-entitymanager</artifactId>
        <version>${hibernate.version}</version>
        <exclusions>
            <exclusion>
                <groupId>javax.transaction</groupId>
                <artifactId>jta</artifactId>
            </exclusion>
            <exclusion>
                <groupId>jboss</groupId>
                <artifactId>javassist</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.hibernate</groupId>
                <artifactId>hibernate-annotations</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <properties>
        <hibernate.version>4.0.1.Final</hibernate.version>
    </properties>

Und Frühlingsversion von: 3.1.0.RELEASE

Ich gehe davon aus, dass etwas versucht, eine XML-Datei zu lesen. Es gibt keine XML-Konfigurationen für den Ruhezustand außer der Eigenschaftendatei für den Ruhezustand. Persistence.xml ist im aktuellen Setup nicht vorhanden. Warum oder wer sucht eine Klasse, die im Ruhezustand 4.0.1 nicht existiert?

Jede Hilfe wäre sehr dankbar!

33
mosgjig

Per Hibernate-Annotationen 3.5 Dokumentation : *

Hibernate 3.5 und höher enthält Hibernate-Annotationen.

Sie sollten die Abhängigkeit von hibernate-annotations entfernen und die excludes aus der hibernate-entitymanager-Abhängigkeit entfernen. Generell sollten Sie keine Versionen abhängiger Pakete mischen.

* und JB Nizets Kommentar.

75
beerbajay

Ich hatte dasselbe Problem, jetzt ist es gut mit meinen Abhängigkeiten.

<properties>
    <spring.version>4.0.5.RELEASE</spring.version>
    <junit.version>4.11</junit.version>
    <jdk.version>1.6</jdk.version>
</properties>

<dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>3.8.1</version>
        <scope>test</scope>
    </dependency>

    <!-- Spring dependencies -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>${spring.version}</version>
    </dependency>

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

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

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

    <!-- Servlet -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>3.0-alpha-1</version>
    </dependency>

    <!-- JSTL -->
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>


    <!-- Apache Commons Upload -->
    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.2.2</version>
    </dependency>

    <!-- Apache Commons Upload -->
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>1.3.2</version>
    </dependency>

    <!-- MYSQL dependency -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-Java</artifactId>
        <version>5.1.6</version>
    </dependency>

    <!-- Hibernate -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.3.5.Final</version>
    </dependency>

    <!-- If using JPA (2), add: -->


    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.5.6</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.5.6</version>
    </dependency>

    <dependency>
        <groupId>c3p0</groupId>
        <artifactId>c3p0</artifactId>
        <version>0.9.1.2</version>
    </dependency>

    <dependency>
        <groupId>org.javassist</groupId>
        <artifactId>javassist</artifactId>
        <version>3.18.1-GA</version>
    </dependency>

</dependencies>
0
Ankit Katiyar

Fügen Sie diese Abhängigkeit zu Ihrer pom.xml hinzu

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>tck-utils-api</artifactId>
    <version>0.9.1</version>
</dependency>
0
Mise

Ich war mit demselben Problem konfrontiert. Nachdem ich Abhängigkeiten für die Ruhezustand-Annotation entfernt hatte, konnte ich meinen Code erfolgreich ausführen. 

0
Shruthi H R