SSH整合出现的问题java.lang.ClassNotFoundException: org.hibernate.util.DTDEntityResolver

huangleijay 2013-03-16 04:11:52
今天刚搭建的JPA(hibernate4.1)+spring 3.1+struts2.3.8环境,遇到了下面异常,查看对比了hibernate3和hibernate4的区别,发现hibernate4是删除了util包,所以说应该hibernate4的话,应该不用下面那个类,求解释!

配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">

<context:component-scan base-package="cn.huanglei_jmr">

<context:include-filter type="annotation"
expression="org.springframework.stereotype.Service" />
</context:component-scan>


<!-- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClass" value="${mysql.driverClassName}"/>

<property name="jdbcUrl" value="${mysql.url}"/>

<property name="user" value="${mysql.username}"/>

<property name="password" value="${mysql.password}"/>

<!--连接池中保留的最小连接数。 -->
<property name="minPoolSize" value="5" />

<!--连接池中保留的最大连接数。Default: 15 -->
<property name="maxPoolSize" value="30" />


<!--初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 -->
<property name="initialPoolSize" value="10" />


<!--最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 -->
<property name="maxIdleTime" value="60" />

<!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 -->
<property name="acquireIncrement" value="5" />


<!--JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。但由于预缓存的statements 属于单个connection而不是整个连接池。所以设置这个参数需要考虑到多方面的因素。
如果maxStatements与maxStatementsPerConnection均为0,则缓存被关闭。Default: 0 -->
<property name="maxStatements" value="0" />


<!--每60秒检查所有连接池中的空闲连接。Default: 0 -->
<property name="idleConnectionTestPeriod" value="60" />

</bean>
<!--
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean">
<property name="persistenceUnitName" value="huanglei_jmr"/>
</bean> -->

<!-- 类工厂由spring管理 -->
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<!-- <property name="dataSource" ref="dataSource"/> --><!-- 注入数据源bean到实体管理工厂bean -->
<property name="persistenceXmlLocation" value="classpath:META-INF/persistence.xml"/>
<!-- <property name="loadTimeWeaver">运行时植入
<bean class="org.springframework.instrument.classloading.InstrumentationLoadTimeWeaver"/>
</property> -->
<property name="persistenceUnitName" value="huanglei_jmr"/>
</bean>

<bean id="txManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory"/>
</bean>

<!--注册关于@Transactional的解析器 -->
<tx:annotation-driven transaction-manager="txManager"/>

<context:annotation-config />

</beans>
错误信息:
三月 16, 2013 3:23:04 下午 org.apache.catalina.core.StandardContext listenerStart
SEVERE: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'buyerServiceBean': Injection of persistence dependencies failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/util/DTDEntityResolver
at org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor.postProcessPropertyValues(PersistenceAnnotationBeanPostProcessor.java:342)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1106)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.
..............
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:2904)
at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1173)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1681)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
at org.hibernate.cfg.Configuration.reset(Configuration.java:325)
at org.hibernate.cfg.Configuration.<init>(Configuration.java:264)
at org.hibernate.cfg.Configuration.<init>(Configuration.java:268)
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)
... 39 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.util.DTDEntityResolver
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
... 55 more
三月 16, 2013 3:23:04 下午 org.apache.catalina.core.StandardContext startInternal
SEVERE: Error listenerStart
三月 16, 2013 3:23:04 下午 org.apache.catalina.core.StandardContext startInternal
SEVERE: Context [/MyWeb01] startup failed due to previous errors
三月 16, 2013 3:23:04 下午 org.apache.catalina.core.ApplicationContext log
INFO: Closing Spring root WebApplicationContext
网上有说:hibernate.annotation.jar不需要,但是我也没导入啊,值导入了:hibernate.common-annotation.jar这个应该没问题!

persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.0"
xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd" >
<persistence-unit name="huanglei_jmr" transaction-type="RESOURCE_LOCAL">

<provider>org.hibernate.ejb.HibernatePersistence</provider> <!-- JPA驱动提供者 -->


</persistence-unit>


</persistence>
请大神指教!!!谢谢
...全文
2749 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
Awbeci 2015-05-21
  • 打赏
  • 举报
回复
引用 8 楼 a732317375 的回复:
hibernate4 的org.springframework.orm.hibernate4.LocalSessionFactoryBean是直接支持annotation的所以你不需要导入hibernate.annotation.jar如果你导入了这个包就会包这个错误了。hibernate4需要导入的包: antlr-2.7.7.jar c3p0-0.9.2.1.jar(因为我使用的c3p0去连接数据库的) dom4j-1.6.1.jar hibernate-c3p0-4.2.3.Final.jar(使用c3p0去连接数据库连接池) hibernate-commons-annotations-4.0.2.Final.jar hibernate-core-4.2.3.Final.jar hibernate-jpa-2.0-api-1.0.1.Final.jar javassist-3.15.0-GA.jar jboss-logging-3.1.0.GA.jar jboss-transaction-api_1.1_spec-1.0.1.Final.jar mchange-commons-java-0.2.3.4.jar
是正解
Alyces 2015-01-15
  • 打赏
  • 举报
回复
同样的问题求解……

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/util/DTDEntityResolver
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1488)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:608)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)
	at com.xinhua.rmp.web.listener.ContainerBeanLoaderListener.contextInitialized(ContainerBeanLoaderListener.java:31)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4210)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4709)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1060)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:822)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1060)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
	at org.apache.catalina.core.StandardService.start(StandardService.java:525)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:759)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:483)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.NoClassDefFoundError: org/hibernate/util/DTDEntityResolver
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2854)
	at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1159)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
	at org.hibernate.cfg.Configuration.reset(Configuration.java:326)
	at org.hibernate.cfg.Configuration.<init>(Configuration.java:265)
	at org.hibernate.cfg.Configuration.<init>(Configuration.java:269)
	at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.<init>(LocalSessionFactoryBuilder.java:106)
	at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:278)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1547)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1485)
	... 27 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.util.DTDEntityResolver
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
	... 41 more
一月 15, 2015 11:56:25 上午 org.apache.catalina.core.StandardContext listenerStart
严重: Exception sending context initialized event to listener instance of class com.xinhua.rmp.web.listener.ContainerBeanLoaderListener
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is java.lang.NoClassDefFoundError: org/hibernate/util/DTDEntityResolver
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1488)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:524)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:461)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:295)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:223)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:292)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:608)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:932)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:479)
	at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:389)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:294)
	at com.xinhua.rmp.web.listener.ContainerBeanLoaderListener.contextInitialized(ContainerBeanLoaderListener.java:31)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4210)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4709)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1060)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:822)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1060)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
	at org.apache.catalina.core.StandardService.start(StandardService.java:525)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:759)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:483)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.NoClassDefFoundError: org/hibernate/util/DTDEntityResolver
	at java.lang.ClassLoader.defineClass1(Native Method)
	at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
	at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2854)
	at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1159)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
	at org.hibernate.cfg.Configuration.reset(Configuration.java:326)
	at org.hibernate.cfg.Configuration.<init>(Configuration.java:265)
	at org.hibernate.cfg.Configuration.<init>(Configuration.java:269)
	at org.springframework.orm.hibernate4.LocalSessionFactoryBuilder.<init>(LocalSessionFactoryBuilder.java:106)
	at org.springframework.orm.hibernate4.LocalSessionFactoryBean.afterPropertiesSet(LocalSessionFactoryBean.java:278)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1547)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1485)
	... 27 more
Caused by: java.lang.ClassNotFoundException: org.hibernate.util.DTDEntityResolver
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
	... 41 more
tdy2837 2014-10-29
  • 打赏
  • 举报
回复
引用 11 楼 tdy2837 的回复:
hibernate.annotation.jar删掉就好了。
至少我的项目是这样子的,我把Hibernate3换成了Hibernate4。
tdy2837 2014-10-29
  • 打赏
  • 举报
回复
hibernate.annotation.jar删掉就好了。
sc86272816 2013-08-14
  • 打赏
  • 举报
回复
缺少hibernate.jar
wrong1111 2013-07-21
  • 打赏
  • 举报
回复
其实还有一点。。。你要看清楚,不是所有的STRUTS2.3 对应是否支持SPRING3.1 相互之前的时候因为版本不支持,你有没有包都会报错的。。
闲逛_一个人 2013-07-20
  • 打赏
  • 举报
回复
hibernate4 的org.springframework.orm.hibernate4.LocalSessionFactoryBean是直接支持annotation的所以你不需要导入hibernate.annotation.jar如果你导入了这个包就会包这个错误了。hibernate4需要导入的包: antlr-2.7.7.jar c3p0-0.9.2.1.jar(因为我使用的c3p0去连接数据库的) dom4j-1.6.1.jar hibernate-c3p0-4.2.3.Final.jar(使用c3p0去连接数据库连接池) hibernate-commons-annotations-4.0.2.Final.jar hibernate-core-4.2.3.Final.jar hibernate-jpa-2.0-api-1.0.1.Final.jar javassist-3.15.0-GA.jar jboss-logging-3.1.0.GA.jar jboss-transaction-api_1.1_spec-1.0.1.Final.jar mchange-commons-java-0.2.3.4.jar
dracularking 2013-06-15
  • 打赏
  • 举报
回复
找这个类org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean 所在jar版本是不是不兼容
桑树叶 2013-06-15
  • 打赏
  • 举报
回复
你把不需要的包统统删掉就好了!!!!! 那是因为用了JPA(hibernate4.1)+spring 3.1+struts2.3.8 之前版本的包。我直接覆盖原来低版本的包,竟是包错。还不如搭建新环境了。
sjw034 2013-05-21
  • 打赏
  • 举报
回复
同问!!!我也少这个包
chen_wd 2013-05-05
  • 打赏
  • 举报
回复
请问LZ这个问题怎么解决的?
七神之光 2013-03-16
  • 打赏
  • 举报
回复
huangleijay 2013-03-16
  • 打赏
  • 举报
回复
引用 1 楼 songbgi 的回复:
Caused by: java.lang.NoClassDefFoundError: org/hibernate/util/DTDEntityResolver 少包了
我第一句话就说了,hibernate3和hibernate4的区别,发现hibernate4是删除了util包,所以说应该hibernate4的话,应该不用下面那个类,求解释!,我用的是hibernate4,如果缺少这个的话,那就是jboss推出hibernate4.1的问题!!
  • 打赏
  • 举报
回复
Caused by: java.lang.NoClassDefFoundError: org/hibernate/util/DTDEntityResolver 少包了

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧