如果我在tomcat 7中部署war,我正在运行Spring 3 + Hibernate 4 jpa和mysql但是如果我在Tomee和1.7.2中部署相同的战争,那么我得到以下异常。
Caused by: java.lang.ClassNotFoundException: org.hibernate.cache.QueryResultsRegion
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
at org.apache.tomee.catalina.LazyStopWebappClassLoader.loadClass(LazyStopWebappClassLoader.java:171)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
我发现此类是hibernate 3.3
的一部分,但我使用的是hibernate 4.2
。
我复制了hibernate-core-4.2.0.Final.jar,hibernate-ehcache-4.2.0.Final.jar,cglib-2.2.2.jar,hibernate-jpa-2.0-api-1.0.1.Final的.jar,休眠公地的注解 - 4.0.1.Final.jar,休眠-的EntityManager-4.2.0.Final.jar,休眠 - 验证 - 4.2.0.Final.jar,ehcache的核心 - 2.4.3.jar的,弹簧数据公地芯1.3.0.RELEASE.jar,弹簧 - 数据 - JP-A-1.1.0.RELEASE.jar,弹簧JDBC-3.0.7.RELEASE.jar,弹簧ORM-3.1.2 .RELEASE.jar到/ lib文件夹也。这些罐子也是战争的一部分。
persistence.xml
是:
<persistence-unit name="default" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider>
</persistence-unit>
答案 0 :(得分:1)
当WebappClassLoader实现尝试启动Web项目时,应用程序或引用的第三方库中的某些内容仍引用r1 0
r1 child 100
类。
这很可能是由于org.hibernate.cache.QueryResultsRegion
过时的JAR造成的。您应该能够通过将Spring版本升级到至少4.0来克服这个问题,但从长远来看,最好是4.1 / 4.2。
在检查我发现的spring-orm-3.1.2.RELEASE.jar
的依赖关系时,它应该与Spring 4.0.x兼容 - 不保证4.1 / 4.2。
另一个棘手的JAR可能是spring-data-commons-core-1.3.0.jar
,因为它已过时(2012年5月发布),并且已经在版本1.9.x中提供。试着找出至少从2014年或更好的2015年开始的星座。
我的建议是:
希望它有所帮助。