首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java.io.NotSerializableException

java.io.NotSerializableException
EN

Stack Overflow用户
提问于 2011-05-10 16:21:31
回答 3查看 9K关注 0票数 1

我正在用primefaces和web2.0做j2ee,现在遇到了这个错误

代码语言:javascript
复制
    java.io.NotSerializableException: org.apache.derby.client.am.PreparedStatement40
java.io.ObjectOutputStream.writeObject0(Unknown Source)
java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
java.io.ObjectOutputStream.writeSerialData(Unknown Source)
java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
java.io.ObjectOutputStream.writeObject0(Unknown Source)
java.io.ObjectOutputStream.writeObject(Unknown Source)
java.util.HashMap.writeObject(Unknown Source)
sun.reflect.GeneratedMethodAccessor21.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
java.io.ObjectOutputStream.writeSerialData(Unknown Source)
java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
java.io.ObjectOutputStream.writeObject0(Unknown Source)
java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)
java.io.ObjectOutputStream.writeSerialData(Unknown Source)
java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
java.io.ObjectOutputStream.writeObject0(Unknown Source)
java.io.ObjectOutputStream.writeArray(Unknown Source)
java.io.ObjectOutputStream.writeObject0(Unknown Source)
java.io.ObjectOutputStream.writeObject(Unknown Source)
java.util.HashMap.writeObject(Unknown Source)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
java.lang.reflect.Method.invoke(Unknown Source)
java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
java.io.ObjectOutputStream.writeSerialData(Unknown Source)
java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
java.io.ObjectOutputStream.writeObject0(Unknown Source)
java.io.ObjectOutputStream.writeObject(Unknown Source)
com.sun.faces.renderkit.ClientSideStateHelper.doWriteState(ClientSideStateHelper.java:293)
com.sun.faces.renderkit.ClientSideStateHelper.writeState(ClientSideStateHelper.java:167)
com.sun.faces.renderkit.ResponseStateManagerImpl.writeState(ResponseStateManagerImpl.java:123)
com.sun.faces.application.StateManagerImpl.writeState(StateManagerImpl.java:155)
com.sun.faces.application.view.WriteBehindStateWriter.flushToWriter(WriteBehindStateWriter.java:221)
com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:397)
com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:126)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:127)
com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:313)

一些谷歌说我需要实现我在这个function.but中使用的所有可序列化的类我已经做了that.and这个错误看起来很普遍,我不能很清楚这个out.and不是真的理解下面的错误

代码语言:javascript
复制
    org.apache.derby.client.am.PreparedStatement40
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-05-10 16:31:08

看起来您正在将一个(JDBC) PreparedStatement存储在一个正在序列化的对象中(可能是会话的一部分)。你应该把它移到其他地方,或者把它标记为暂时的(不要忘记,当它被恢复时,它将会丢失)。

票数 1
EN

Stack Overflow用户

发布于 2011-05-10 16:30:02

问题是,您试图序列化的对象引用了org.apache.derby.client.am.PreparedStatement40,,或者很可能引用了java.sql.Statement,这是该类实现的接口。您必须删除该引用才能使其正常工作

票数 1
EN

Stack Overflow用户

发布于 2011-05-10 17:17:59

线索就在这里:

代码语言:javascript
复制
StateManagerImpl.writeState

可能是您在某个组件上设置了不适当的值。您可能需要在支持bean中显式调用setValue的地方使用EL绑定(根据发布的信息,我的猜测是最好的)。

JSF使用在请求之间持久化的有状态UI组件树。树结构和树上设置的任何值将在呈现响应阶段结束时保存。通常,数据保存在会话或隐藏表单域中。因此,组件上设置的任何值都必须是可序列化的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5947191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档