2012-04-17 104 views
1

我想使用Apache骆驼下载的网页,而可悲的是我的努力被错误,所有这一切似乎这桩墙停止由以下原因造成:Apache的骆驼找不到servlet类

java.lang.NoClassDefFoundError: javax/servlet/ServletInputStream 

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

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

  • SLF4J-API-1.6.4.jar
  • SLF4J-简单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“run”按钮。我究竟做错了什么?

+0

加上'的javax.servlet-api' Maven依赖关系来解决它。 ' javax.servlet javax.servlet-api 3.0.1' – Braj 2015-03-04 14:29:10

回答

1

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

org.apache.geronimo.specs:Geronimo的servlet_2.5_spec:罐子:1.1.2:编译

你可以找到它在中央Maven回购: http://repo2.maven.org/maven2/org/apache/geronimo/specs/geronimo-servlet_2.5_spec/1.1.2/

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

而且,由于您使用的骆驼http4,使用你需要它的依赖的Apache HTTP客户端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