江湖人称小程 2018-03-23 09:33 采纳率: 100%
浏览 7757
已采纳

java.io.OptionalDataException

我在项目运行一段时间后,出现这个错误:
net.sf.ehcache.CacheException: java.io.OptionalDataException
代码定位在我像缓存里面put数据的时候

请问这是什么原因导致的啊????

以下是堆栈:
Caused by: net.sf.ehcache.CacheException: java.io.OptionalDataException
at net.sf.ehcache.store.disk.DiskStorageFactory.retrieve(DiskStorageFactory.java:938)
at net.sf.ehcache.store.disk.Segment.decode(Segment.java:167)
at net.sf.ehcache.store.disk.Segment.put(Segment.java:444)
at net.sf.ehcache.store.disk.DiskStore.put(DiskStore.java:475)
at net.sf.ehcache.store.FrontEndCacheTier.put(FrontEndCacheTier.java:221)
at net.sf.ehcache.Cache.putInternal(Cache.java:1492)
at net.sf.ehcache.Cache.put(Cache.java:1417)
at net.sf.ehcache.Cache.put(Cache.java:1382)

  • 写回答

2条回答 默认 最新

  • 爱_LOVE 2018-03-23 09:35
    关注

    定位问题的办法:
    修改JDK 的library里的ObjectInputStream类,当出现StreamCorruptedException时把Stream里的前4K字节写到console ouput中。可以通过这个方法找到第一次破坏协议的序列化的内容,以这个序列化的内容作为线索找出应用问题发生的地方。在出现问题的系统上加上这个补丁。这个补丁需要使用-Xbootclasspath来设置,影响JVM boot ClassLoader.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?