纳闷的错误:IllegalAccessError,EhcacheManager

junit测试时在 加载spring bean的时候报错:
nested exception is java.lang.IllegalAccessError: tried to access method net.sf.ehcache.CacheManager.(Ljava/io/InputStream;)V from class org.springframework.cache.ehcache.EhCacheManagerFactoryBean

发现是ehcache 1.1中没法使用independent cache,spring的javadoc说:
Set whether the EHCache CacheManager should be shared (as a singleton at the VM level) or independent (typically local within the application). Default is "false", creating an independent instance.

Note that independent CacheManager instances are only available on EHCache 1.2 and higher. Switch this flag to "true" if you intend to run against an EHCache 1.1 jar.

EhCacheManagerFactoryBean的代码如下:
[code]
// Independent CacheManager instance (the default).
if (this.configLocation != null) {
this.cacheManager = new CacheManager(this.configLocation.getInputStream());
}
else {
this.cacheManager = new CacheManager();
}
[/code]
在ehcache1.1中CacheManager()和,CacheManager(InputStream)都是private的,所以会发生
IllegalAccessError,但是为什么报错的是试图调用 init方法呢? init方法在1.2才出现的,1.1根本没这个方法。

你可能感兴趣的:(Programming)