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!
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 exclude
s aus der hibernate-entitymanager
-Abhängigkeit entfernen. Generell sollten Sie keine Versionen abhängiger Pakete mischen.
* und JB Nizets Kommentar.
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>
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>
Ich war mit demselben Problem konfrontiert. Nachdem ich Abhängigkeiten für die Ruhezustand-Annotation entfernt hatte, konnte ich meinen Code erfolgreich ausführen.