Java-通过ObjectOutputStream发送文档

Java-通过ObjectOutputStream发送文档,java,document,objectoutputstream,Java,Document,Objectoutputstream,好的,我正在尝试创建一个连接到服务器的浏览器,当用户输入url时,浏览器会将该url发送到服务器。然后,服务器在一个JEditorPane中打开url,然后使用getDocument()方法尝试通过ObjectOutputStream将该文档发送回客户端。不幸的是,我还没有弄明白这一点,是不能通过objectoutputstream发送文档,还是我做错了什么 以下是我正在使用的代码: 设置页面并获取文档的方法: url = (String) input.readObject(); window

好的,我正在尝试创建一个连接到服务器的浏览器,当用户输入url时,浏览器会将该url发送到服务器。然后,服务器在一个JEditorPane中打开url,然后使用getDocument()方法尝试通过ObjectOutputStream将该文档发送回客户端。不幸的是,我还没有弄明白这一点,是不能通过objectoutputstream发送文档,还是我做错了什么

以下是我正在使用的代码:

设置页面并获取文档的方法:

url = (String) input.readObject();

window.setPage(url);
doc = window.getDocument();

sendDoc(doc);
通过objectoutputstream发送文档的方法:

try {

    output.writeObject(doc); // no compiling errors...
    output.flush();

} catch (Exception e) { }
我得到的错误:

java.io.WriteAbortedException: writing aborted;
java.io.NotSerializableException:
javax.swing.text.html.CSS$Value is not serializable as a value in an AttributeSet

at DawgsCodeBrowser.whileConnected(DawgsCodeBrowser.java:101)
at DawgsCodeBrowser.Run(DawgsCodeBrowser.java:71)
at StartBrowser.main(StartBrowser.java:8)
Caused by: java.io.NotSerializableException:
javax.swing.text.html.CSS$Value is not serializable as a value in an AttributeSet
at DawgsCodeServer.sendDoc(DawgsCodeServer.java:154)
at DawgsCodeServer.whileConnected(DawgsCodeServer.java:100)
at DawgsCodeServer.Run(DawgsCodeServer.java:59)
at StartServer.main(StartServer.java:11)

at DawgsCodeBrowser.whileConnected(DawgsCodeBrowser.java:101)
at DawgsCodeBrowser.Run(DawgsCodeBrowser.java:71)
at StartBrowser.main(StartBrowser.java:8)
Caused by: java.io.NotSerializableException:
javax.swing.text.html.CSS$Value is not serializable as a value in an AttributeSet
at DawgsCodeServer.sendDoc(DawgsCodeServer.java:154)
at DawgsCodeServer.whileConnected(DawgsCodeServer.java:100)
at DawgsCodeServer.Run(DawgsCodeServer.java:59)
at StartServer.main(StartServer.java:11)
很抱歉,错误信息太长,我取出了一些,这样就不会那么长了…

这里这么说:

Caused by: java.io.NotSerializableException: javax.swing.text.html.CSS$Value is not serializable as a value in an AttributeSet 
这个内部CSS$Value类正在扼杀你,你可能对此无能为力


相反,在这种情况下,您需要问为什么发送文档比发送实际的原始HTML更好。

您尝试编写的对象实现了
可序列化
接口。错误消息的第一行。什么类是
doc
?为什么它首先要序列化
CSS.Value
?序列化
CSS
还不够吗
CSS
是一个可序列化的
CSS
。因为数据结构在内部引用CSS$值。java序列化程序只是在遍历对象,它偶然发现了一个CSS$Value的实例,这显然是不可序列化的。一旦被发现,它就会毁掉整个聚会。