Spring 3.2.x + Hibernate 4.3.x集成,点击JtaPlatform
ClassNotFoundException,搜索项目的类路径,发现JtaPlatform
位于不同的包中吗?
hibernate-core.4.3.5.Final.jar
org.hibernate.engine.transaction.jta.platform.spi.JtaPlatform
错误消息显示org.hibernate.service.jta.platform.spi.JtaPlatform
Caused by: java.lang.NoClassDefFoundError: org/hibernate/service/jta/platform/spi/JtaPlatform
at org.springframework.orm.hibernate4.SpringSessionContext.<init>(SpringSessionContext.java:56)
~[spring-orm-3.2.8.RELEASE.jar:3.2.8.RELEASE]
... 40 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.hibernate.service.jta.platform.spi.JtaPlatform
//...
pom.xml
<!-- Hibernate ORM -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.5.Final</version>
</dependency>
<!-- Spring 3 dependencies -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.2.8.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>3.2.8.RELEASE</version>
</dependency>
解
从Hibernate 4.3.x开始, JtaPlatform
类被重构为新的程序包。 要解决此问题,请将 Hibernate降级至4.2.x或更早版本,或升级Spring框架。
在我的开发环境中经过测试,以下是可以使用的版本:
- 春天3.2.8。发布
- 休眠4.2.11.Final
pom.xml
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.2.11.Final</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>3.2.8.RELEASE</version>
</dependency>