1

我想使用 Apache Camel 下载网页,遗憾的是我的努力被可怕的错误墙阻止了,所有这些似乎都是由以下原因引起的:

java.lang.NoClassDefFoundError: javax/servlet/ServletInputStream

我觉得它很混乱,因为它看起来像是标准库中的一个类。

我在 Eclipse 中创建了项目,在引用的库中我有:

  • slf4j-api-1.6.4.jar
  • slf4j-simple-1.6.4.jar
  • 骆驼核心-2.9.1.jar
  • 骆驼-http4-2.9.1.jar

应该完成这项工作的类代码:

package camelexample;

import org.apache.camel.CamelContext;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.DefaultCamelContext;

public class HttpDownload {
  public static void main(String[] args) throws Exception{
    System.out.print("download");

    CamelContext context = new DefaultCamelContext();
    context.addRoutes(new RouteBuilder(){
      public void configure(){
        from("http://www.ii.uni.wroc.pl/~gst/").to("file:data/webpage.html");
      }
    });

    context.start();
    Thread.sleep(10);
    context.stop();
  }
}

为了运行该项目,我只使用了 Eclipse 的“运行”按钮。我究竟做错了什么?

4

1 回答 1

1

您需要使用 servlet API 添加一个 JAR,例如这个 JAR

org.apache.geronimo.specs:geronimo-servlet_2.5_spec:jar:1.1.2:compile

您可以在中央 maven 存储库中找到它: http ://repo2.maven.org/maven2/org/apache/geronimo/specs/geronimo-servlet_2.5_spec/1.1.2/

然后将该 JAR 添加到您的类路径中。

而且由于您使用camel-http4,它使用Apache Http Client 4.x,您还需要它的依赖项

[INFO] +- org.apache.httpcomponents:httpclient:jar:4.1.3:compile
[INFO] |  +- org.apache.httpcomponents:httpcore:jar:4.1.4:compile
[INFO] |  +- commons-logging:commons-logging:jar:1.1.1:compile
[INFO] |  \- commons-codec:commons-codec:jar:1.4:compile
于 2012-04-18T16:07:23.330 回答