如何解决java.lang.ClassNotFoundException:org.hibernate.util.DTDEntityResolver与Spring 4.0.1使用Spring 3.1? [英] How can i resolve java.lang.ClassNotFoundException: org.hibernate.util.DTDEntityResolver when using Spring 3.1 with Hibernate 4.0.1?

查看:135
本文介绍了如何解决java.lang.ClassNotFoundException:org.hibernate.util.DTDEntityResolver与Spring 4.0.1使用Spring 3.1?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我最近升级到Hibernate 4.0.1.Final,并在上下文启动时收到以下错误:

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>

和Spring版本:3.1.0.RELEASE

And spring version of: 3.1.0.RELEASE

我假设某事正在尝试读取一个xml文件。除了属性文件以外,没有hibernate的hibernate配置用于hibernate。 Persistence.xml在当前设置中不存在。为什么或者在寻找一个在hibernate 4.0.1中不存在的类?

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!

推荐答案

根据 Hibernate注释3.5文档:*


Hibernate 3.5及更高版本包含Hibernate Annotations。

Hibernate 3.5 and onward contains Hibernate Annotations.

您应该移除对 hibernate-annotations 的依赖关系,并移除 exclude s来自 hibernate-entitymanager 依赖项。一般来说,你不应该混用从属软件包的版本。

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.

*和JB Nizet的评论。

* and JB Nizet's comment.

这篇关于如何解决java.lang.ClassNotFoundException:org.hibernate.util.DTDEntityResolver与Spring 4.0.1使用Spring 3.1?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆