javascript - HtmlUnit:HtmlPage 序列化异常

标签 javascript css htmlunit serializable

在使用 HtmlUnit-2.13 执行将样式属性注入(inject) 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)

如果 style 属性在页面上且未注入(inject),则页面可以毫无问题地序列化。

更新于 12/04/2013:

我发现问题出在这个字段:

private Map<String, StyleElement> styleMap_;

它是 CSSStyleDeclaration 类的成员。 StyleElement 类未实现 Serializable 接口(interface)。

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

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

最佳答案

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

关于javascript - HtmlUnit:HtmlPage 序列化异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20339873/

相关文章:

html - 带有子菜单的导航菜单未保持突出显示

html - 用 CSS 完成奇怪的需求(一种模拟框架)

java - HTMLUnit 不会等待 Javascript 2

java - 如何使用 HtmlUnit 发布 HEAD 请求?

javascript - 如何在 javascript 中添加 html <br> 标签

javascript - 动态地将元素放置在圆形路径中

javascript - 防止在移动设备上的输入字段中输入小数位

php - 如何调用从 PHP 传递变量的 Javascript

html - 为什么这个 margin 会流出它的母公司?

javascript - HtmlUnit 未完全加载 YouTube 上的页面