web-dev-qa-db-ja.com

Hibernate 4.0.1でSpring 3.1を使用しているときにJava.lang.ClassNotFoundException:org.hibernate.util.DTDEntityResolverを解決するにはどうすればよいですか?

最近、Hibernate 4.0.1.Finalにアップグレードしましたが、コンテキストの起動時に次のエラーが表示されます。

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)

私の構成は次のとおりです。

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

依存関係の一部は次のとおりです。

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

そして春バージョン:3.1.0.RELEASE

何かがxmlファイルを読み取ろうとしていると仮定しています。プロパティファイル以外に、hibernateのhibernate xml設定はありません。 Persistence.xmlは現在のセットアップには存在しません。 hibernate 4.0.1に存在しないクラスを探しているのはなぜですか?

どんな助けも大歓迎です!

33
mosgjig

Hibernate Annotations 3.5ドキュメント :*

Hibernate 3.5以降には、Hibernate Annotationsが含まれています。

hibernate-annotationsへの依存関係を削除し、hibernate-entitymanager依存関係からexcludesを削除する必要があります。一般に、依存パッケージのバージョンを混在させないでください。

*およびJB Nizetのコメント。

75
beerbajay

私は同じ問題を抱えていましたが、これらの依存関係は問題ありません。

<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

この依存関係をpom.xmlに追加します

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

私は同じ問題に直面していました。休止状態の注釈の依存関係を削除した後、コードを正常に実行できました。

0
Shruthi H R