Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I resolve java.lang.ClassNotFoundException: org.hibernate.util.DTDEntityResolver when using Spring 3.1 with Hibernate 4.0.1?

I recently upgraded to Hibernate 4.0.1.Final and am receiving the following error on context startup:

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)

My configuration is as follows:

<!-- 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" />

Some of the dependencies are:

    <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>

And spring version of: 3.1.0.RELEASE

I am assuming that something is trying to read an xml file. There are no hibernate xml configurations for hibernate other than the properties file. Persistence.xml does not exist in current setup. Why or who is seeking a class that does not exist in hibernate 4.0.1?

Any help would greatly be appreciated!

like image 705
mosgjig Avatar asked Feb 03 '12 19:02

mosgjig


1 Answers

Per the Hibernate annotations 3.5 documentation:*

Hibernate 3.5 and onward contains Hibernate Annotations.

You should remove the dependency on hibernate-annotations, and remove the excludes from the hibernate-entitymanager dependency. Generally, you should not mix versions of dependent packages.

* and JB Nizet's comment.

like image 170
beerbajay Avatar answered Sep 27 '22 22:09

beerbajay