0

我在从 HtmlUnit java 包中反序列化 Htmlpage 时遇到了一些麻烦。

TL;博士

我得到的错误(发生在线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 中的协议插件)。然后使用content.getContent()方法接收它(这发生在 Nutch的Parsing 插件中)。


我拥有 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 - 2012 年 9 月 10 日的 SVN 快照,按照这个简短的教程http://htmlunit.sourceforge.net/gettingLatestCode.html编译

Nutch 1.4


我希望我提供的信息已经足够了。如果没有,请在评论中告诉我,我很乐意更新问题。

在此先感谢和问候,

萨尔斯基

4

1 回答 1

0

根据 grepcode.comcom.gargoylesoftware.htmlunit.util.Cookie存在于以下版本的 htmlunit:2.9、2.8、2.7。

例如,尝试使用 htmunit v2.9。可能是您的类路径中的某些 jar 正在寻找特定版本的 htmlunit

于 2012-09-10T14:48:56.743 回答