2012-02-21 63 views
0

尝试获取memcache客户端时,获取下面的exceptone。Memcache get方法抛出IOException

Caused by: java.io.IOException: com.fet.myclass.webservice.data.DataList 
    at com.schooner.MemCached.ObjectTransCoder.decode(Unknown Source) 

请帮忙。谢谢。

编辑:

DataList是我自己的对象。是否有任何约束,像只有本机java对象可以被缓存,像那样?

+1

@downvoter,请解释一下。 – Vaandu 2012-02-21 13:24:33

+0

你可以发布完整的堆栈跟踪吗?什么是DataList?并可以发布其相关代码 – Sean 2012-02-21 14:01:53

+0

DataList是我自己的对象,并设置为memcache工作正常。当调用get方法时,它会抛出IOException异常。 – Vaandu 2012-02-21 14:07:50

回答

0

MemCached.ObjectTransCoder解码方法依赖于java.io.ObjectInputStream从缓存中反序列化缓存的Java对象。

所以,首先,你必须检查你的DataList对象是否可序列化。即:它实现java.io.Serializable接口,并且它的所有类级别属性本身都是原始类型或可序列化对象。

另外,查看列出的组件代码here解码方法的实现方式是ClassNotFoundException被封装在IOExpcetion中,使用类名作为它的消息,这似乎正在发生。所以,作为第二点,你应该检查你得到这个错误的过程,你的类是否包含在它的类路径中(通过-cp参数,或者任何情况),以及如果类名暴露在该错误恰好与您的类完全限定名称相匹配。

相关问题