我在从HtmlUnit java包中反序列化Htmlpage时遇到了一些麻烦。
我得到的错误(发生在第Object o = in.readObject();
行):
java.lang.ClassNotFoundException: com.gargoylesoftware.htmlunit.util.Cookie
完整堆栈跟踪:http://pastebin.com/geH7SgWu
这个问题可能是什么原因造成的?我错过了什么或者SVN代码是否有缺陷?
我使用的代码:
序列化:
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutput out = null;
try {
out = new ObjectOutputStream(bos);
out.writeObject(this.htmlPage);
} catch (Exception ex) {
ex.printStackTrace(System.out);
} finally {
out.close();
bos.close();
}
return bos.toByteArray();
反序列化:
ByteArrayInputStream bis = new ByteArrayInputStream(content.getContent());
ObjectInput in = null;
HtmlPage htmlPage2 = null;
try {
in = new ObjectInputStream(bis);
Object o = in.readObject();
htmlPage2 = (HtmlPage) o;
} catch (Exception ex) {
ex.printStackTrace(System.out);
} finally {
bis.close();
in.close();
}
序列化对象在content
变量(Nutch中为Protocol plugin)中以字节形式发送。然后使用content.getContent()
方法接收它(这发生在Nutch的Parsing plugin中)。
我可以从代码中访问HtmlUnit和HtmlUnit本身的所有依赖项。
奇怪的是,我甚至没有在任何地方使用Cookie
类。后来,出于测试目的,我创建了一个Cookie,一切顺利。
我已经确认它包含在其中一个罐子中:
$ jar -tf htmlunit-2.11-SNAPSHOT.jar | grep Cookie
com/gargoylesoftware/htmlunit/HtmlUnitCookieStore.class
com/gargoylesoftware/htmlunit/util/Cookie.class
com/gargoylesoftware/htmlunit/HtmlUnitBrowserCompatCookieSpec.class
com/gargoylesoftware/htmlunit/HtmlUnitBrowserCompatCookieSpec$2.class
com/gargoylesoftware/htmlunit/CookieManager.class
com/gargoylesoftware/htmlunit/HtmlUnitBrowserCompatCookieSpec$1.class
com/gargoylesoftware/htmlunit/HtmlUnitBrowserCompatCookieSpec$3.class
JAR可见:
commons-codec-1.6.jar
commons-collections-3.2.1.jar
commons-io-2.4.jar
commons-lang3-3.1.jar
commons-logging-1.1.1.jar
cssparser-0.9.7.jar
htmlunit-2.11-SNAPSHOT.jar
htmlunit-core-js-2.11-20120814.002723-22.jar
httpclient-4.2.1.jar
httpcore-4.2.1.jar
httpmime-4.2.1.jar
jetty-http-8.1.5.v20120716.jar
jetty-io-8.1.5.v20120716.jar
jetty-util-8.1.5.v20120716.jar
jetty-websocket-8.1.5.v20120716.jar
nekohtml-1.9.16.jar
sac-1.3.jar
serializer-2.7.1.jar
xalan-2.7.1.jar
xercesImpl-2.10.0.jar
xml-apis-1.4.01.jar
HtmlUnit - 通过以下简短教程http://htmlunit.sourceforge.net/gettingLatestCode.html编译的10.09.2012上的SVN快照
Nutch 1.4
我希望我提供的信息足够了。如果没有,请在评论中告诉我,我很乐意更新问题。
提前致谢并致谢,
szalski
答案 0 :(得分:0)
根据grepcode.com com.gargoylesoftware.htmlunit.util.Cookie
出现在以下版本的htmlunit中:2.9,2.8,2.7。
尝试使用htmunit v2.9作为示例。可能是你的类路径中的一些罐子正在寻找特定版本的htmlunit