HtmlUnit:HtmlPage序列化异常

时间:2013-12-02 23:21:05

标签: javascript css htmlunit serializable

执行使用HtmlUnit-2.13在HTML标记上注入样式属性的JavaScript函数后,我们无法序列化生成的HtmlPage,并收到以下错误:

java.io.NotSerializableException:com.gargoylesoftware.htmlunit.javascript.host.css.CSSStyleDeclaration$StyleElement
 at java.io.ObjectOutputStream.writeObject0(Unknown Source)
 at java.io.ObjectOutputStream.writeObject(Unknown Source)
 at java.util.HashMap.writeObject(Unknown Source)
 at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at java.io.ObjectStreamClass.invokeWriteObject(Unknown Source)
 at java.io.ObjectOutputStream.writeSerialData(Unknown Source)
 at java.io.ObjectOutputStream.writeOrdinaryObject(Unknown Source)
 at java.io.ObjectOutputStream.writeObject0(Unknown Source)
 at java.io.ObjectOutputStream.defaultWriteFields(Unknown Source)

如果样式属性在页面上而未注入,则页面可以顺序排列。

于2013年4月12日更新:

我发现问题出在这个领域:

  

私人地图< String,StyleElement> StyleMap设定_ 的;

是CSSStyleDeclaration类的成员。 StyleElement类不实现Serializable接口。

最初,该字段等于null并且不会出现问题。但是,一旦执行了JavaScript事件,Map就不会再指向null并抛出异常。

我做错了吗?该字段应该始终为null或者之前没有人尝试序列化该类?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。我创建了一个错误,现在已修复:https://sourceforge.net/p/htmlunit/bugs/1569/ 所以你可以使用SVN的最新版本,它工作正常!