2013-12-02 3 views
1

После выполнения функции JavaScript, который вводит атрибут стиля на HTML-тег с помощью HtmlUnit-2.13, мы не можем сериализации результирующую HTMLPage и мы получаем следующее сообщение об ошибке:HtmlUnit: 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) 

Если стиль атрибут находится на странице и не вводится, страница может быть сериализована без каких-либо проблем.

Обновлено 12/04/2013:

Я нашел, что проблема будет находится в этой области:

private Map<String, StyleElement> styleMap_;

, который является членом класса CSSStyleDeclaration. Класс StyleElement не реализует интерфейс Serializable.

Первоначально поле равно null и никаких проблем не возникает. Однако, как только событие JavaScript выполняется, Map больше не указывает на null и генерируется исключение.

Я что-то не так? Это поле должно быть всегда null или никто не пытался сериализовать этот класс раньше?

+0

Как именно вы сериализуете страницу? –

+0

Я использую следующий фрагмент: 'ByteArrayOutputStream bos = new ByteArrayOutputStream(); ObjectOutput out = null; try { out = new ObjectOutputStream (bos); out.writeObject (страница); } catch (Exception ex) { ex.printStackTrace (System.out); } finally { out.close(); bos.close(); } return bos.toByteArray(); ' – Stathis

ответ

0

У меня была та же проблема. Я создал ошибку, и теперь она исправлена: https://sourceforge.net/p/htmlunit/bugs/1569/ Итак, вы можете использовать последнюю версию из своего SVN, и она отлично работает!

Смежные вопросы