junit测试时在 加载spring bean的时候报错:
nested exception is java.lang.IllegalAccessError: tried to access method net.sf.ehcache.CacheManager.<init>(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根本没这个方法。
nested exception is java.lang.IllegalAccessError: tried to access method net.sf.ehcache.CacheManager.<init>(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根本没这个方法。
本文探讨了在使用JUnit进行Spring集成测试时遇到的IllegalAccessError问题,特别是当尝试使用ehcache 1.1版本时,由于CacheManager构造方法的访问级别问题导致的错误,并提供了解决方案。
311

被折叠的 条评论
为什么被折叠?



