java.lang.NoClassDefFoundError:org/hibernate/cache/spi/RegionFactory-从Spring3升级到Spring4时

java.lang.NoClassDefFoundError:org/hibernate/cache/spi/RegionFactory-从Spring3升级到Spring4时,java,spring,hibernate,maven,spring-mvc,Java,Spring,Hibernate,Maven,Spring Mvc,我正在将我的spring项目从3.0.5更新到4.0.3 一切正常,但在启动时,当spring尝试创建bean时,我遇到了以下错误消息: 该类当然不存在于ehcache-core、hibernate-ehcache或hibernate-core中。事实上,包spi似乎并不存在于任何地方。然而,我已经检查了maven依赖项,看起来Spring4.0.3和Hibernate3.6.10应该是完全兼容的。在我的pom中,我直接依赖hibernate ehcache,它反过来自动拉入适当版本的ehca

我正在将我的spring项目从3.0.5更新到4.0.3

一切正常,但在启动时,当spring尝试创建bean时,我遇到了以下错误消息:

该类当然不存在于ehcache-core、hibernate-ehcache或hibernate-core中。事实上,包
spi
似乎并不存在于任何地方。然而,我已经检查了maven依赖项,看起来Spring4.0.3和Hibernate3.6.10应该是完全兼容的。在我的pom中,我直接依赖hibernate ehcache,它反过来自动拉入适当版本的ehcache核心(显然是完成的事情),如下所示:

我的依赖项看起来像:

我已经广泛地搜索了这个错误,但只能找到几个对它的引用。考虑到它的模糊性,我猜它是我项目中某个地方引用这个RegionFactory类的配置,然而,尽管进行了大量搜索,我还是找不到任何东西

你知道我如何用spring 4.0.3构建这个项目吗

我可以提供您需要的任何其他数据

关键是针对Spring4.0.3.0版本构建项目。无论hibernate或ehcache的哪个版本使我能够做到这一点都无关紧要。显然,我更喜欢pom更改而不是重新配置而不是更改代码。。。但我会尽我所能

编辑:
我试图避免更新hibernate超过4.x.y版本,因为这个项目非常大,并且使用了
HibernateDaoSupport
HibernateTemplate
非常广泛(数千个独立的用法,需要很长时间才能重构)

更新hibernate版本

在Hibernate版本4.0.0.Final之后,他们从RegionFactory更改包

3.6.10.最终: org.hibernate.cache.RegionFactory 4.0.0.最终版本:
org.hibernate.cache.spi.RegionFactory。

试试hibernate版本4.0.1.FINAL,您尝试使用的类似乎已添加到
4.0.0
中。您的依赖关系有点混乱。您将Spring1.2.9和4.0.3以及SpringSecurity 3.2.0与旧的acegi安全性混合在一起。我还高度怀疑Spring模块是否仍在使用新版本的Spring(该项目已经过时并被废弃了很长一段时间)。你能发布你的hibernate和缓存配置吗。@M.Deinum没有参数。这是一个遗留项目,有很多技术债务。我认为它们中的很多甚至没有被使用(尽管spring安全性是经过深思熟虑的)。我很快会发布额外的信息。保罗,现在有同样的问题了。您是如何修复的?@StasKolodyuk我现在很难记住,但我相信最终我需要使用更新版本的hibernate——扩展到Eh缓存——对我来说,这是一个巨大的麻烦(因为hibernate模板的使用非常广泛,而新版本的hibernate不支持该模板,并且交织的会话管理代码使得更新变得非常困难),但希望对您来说,这只是一个简单的POM更改!我试图避免更新Hibernate版本超过4.x.y,因为这次升级破坏了该项目广泛使用的Hibernate OSupport。文档似乎暗示它与Hibernate 3.6.10一起工作。最终?Hibernate OSupport没有中断。对于Hibernate 4.x.y的使用,有一个class org.springframework.orm.hibernate4.support.HibernateDaoSupport.HibernateTemplate就我所知在spring 4中并不存在?试图尽可能避免代码更改。spring 4.x.y有一个HibernateDaoSupport,请参见:是的,但没有HibernateTemplate,我们的代码中有数千个引用。是否有替代ma的方法最好对遗留代码进行1000多次更改。