执行使用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或者之前没有人尝试序列化该类?
答案 0 :(得分:0)
我遇到了同样的问题。我创建了一个错误,现在已修复:https://sourceforge.net/p/htmlunit/bugs/1569/ 所以你可以使用SVN的最新版本,它工作正常!