我正在使用EhCache存储我的应用程序对象的有限大小的缓存,但是升级其版本后,在使用cache.get(...)时遇到此异常:
java.lang.ClassCastException: net.sf.ehcache.store.chm.SelectableConcurrentHashMap$DummyPinnedKey cannot be cast to br.com.project.util.VttcElement
有人知道我们应该在缓存键中实现任何新接口吗?
这是我改编的代码:
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
private VttcElementCache() {
CacheManager cacheManager = CacheManager.create(METAINFFileLoader.getInputStream("ehcache.xml"));
cache = cacheManager.getCache("br.com.project.util.VttcElement");
}
private void load(int id, long idf) {
cache.put(new Element(new VttcElement(id, idf), "1"));
}
private String get(VttcElement vttcElement) {
Element element = cache.get(vttcElement); //The exception is thrown here!
(String) return elemente.getValue();
}
最佳答案
我找到了。
由于某种原因,我的键类VttcElement不能很好地存储在缓存中,因为在它生成(VttcElement)obj的行中,在其equals方法内引发了异常。
我使用与逗号连接的属性将所有键更改为Strings而不是VttcElement,它完美地用作键。
非常感谢。
关于java - 带有EhCache 2.6.0的ClassCastException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12605860/