Caused by: java.lang.NoSuchMethodError: org.springframework.cache.ehcache.EhCach
eFactoryBean.setMaxEntriesLocalHeap(J)V
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.cache.ehcache.EhCacheFactoryBean]:
Constructor threw exception; nested exception is java.lang.NoSuchMethodError: org.springframework
.cache.ehcache.EhCacheFactoryBean.setMaxEntriesLocalHeap(J)V
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:163)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy
.instantiate(SimpleInstantiationStrategy.java:89)
at org.springframework.beans.factory.support.AbstractAutowireCapableBean
Factory.instantiateBean(AbstractAutowireCapableBeanFactory.java:1086)
... 192 more
Caused by: java.lang.NoSuchMethodError: org.springframework.cache.ehcache.EhCach
eFactoryBean.setMaxEntriesLocalHeap(J)V
at org.springframework.cache.ehcache.EhCacheFactoryBean.<init>(EhCacheFa
ctoryBean.java:101)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstruct
orAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingC
onstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:408)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:1
47)
... 194 more
答案 0 :(得分:3)
答案 1 :(得分:1)
setMaxEntriesLocalHeap
中使用的方法EhCacheFactoryBean
位于父类CacheConfiguration
中,您可以看到源代码:
public class EhCacheFactoryBean extends CacheConfiguration implements FactoryBean<Ehcache>, BeanNameAware, InitializingBean {
}
未找到可能由CacheConfiguration
没有自动连接到bean工厂引起的,你可以检查一下。
答案 2 :(得分:0)
您尝试使用的lib中应该存在版本不匹配。扯下jar并使用jdgui查看该类是否可用。
这里的问题是你在模块中使用的lib,你引用的lib是不同的,因此是例外。
答案 3 :(得分:0)
需要的Jar文件: - spring-security 2.0.3和spring 2.5.5以及echeche 1.2.4 ehcache config
<ehcache>
<diskStore path="java.io.tmpdir"/>
<defaultCache maxElementsInMemory="10000" eternal="false" timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" diskPersistent="false" diskExpiryThreadIntervalSeconds="120" memoryStoreEvictionPolicy="LRU"/>
</ehcache>
Spring config:
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheMa nagerFactoryBean">
<property name="configLocation" value="classpath:ehcache-failsafe.xml" />
</bean>
<bean id="userCacheBackend" class="org.springframework.cache.ehcache.EhCacheFa ctoryBean">
<property name="cacheManager" ref="cacheManager" />
<property name="cacheName" value="userCache" />
</bean>
<bean id="userCache" class="org.springframework.security.providers.dao. cache.EhCacheBasedUserCache">
<property name="cache" ref="userCacheBackend" />
</bean>
答案 4 :(得分:0)
使用mvn dependency:tree
并检查org.springframework:spring-context-support:jar
的版本是否比3.2.13.RELEASE
更新。
如果是这样意味着您需要在2.5及更高版本中使用EhCache。如果你不能,例如因为你正在使用需要2.4.x ehCache的hibernate-ehcache
那么唯一的方法是使用旧的spring-context-support:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>3.2.13.RELEASE</version><!-- wersja wymagana przez ehcache-core 2.4.8-->
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</exclusion>
</exclusions>
</dependency>
它应该适用于较新的弹簧。我已经排除了依赖项以防止下载它们的旧版本。
答案 5 :(得分:0)
我遇到了类似的问题,并通过升级到ehcache版本2.7.1解决了该问题