2015-04-23 47 views
0

我的嵌入式码头具有/home/user/Desktop/jetty-web.xml以下文件:嵌入式码头与旧版本的Servlet API的运行

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com 
/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"/> 

我开始我的服务器用下面的代码:

Server server = new Server(); 

SelectChannelConnector connector = new SelectChannelConnector(); 
     connector.setPort(ServerConfig.PORT); 
     connector.setMaxIdleTime(ServerConfig.MAX_IDLE_TIME); 
     connector.setRequestHeaderSize(ServerConfig.REQUEST_HEADER_SIZE); 
     server.setConnectors(new Connector[]{connector}); 

WebAppContext webAppContext = new WebAppContext(); 
webAppContext.setDescriptor("/home/user/Desktop/jetty-web.xml"); 
webAppContext.setBaseResource(Resource.newResource("/")); 
     webAppContext.setContextPath("/"); 

//add a few servlets... 

server.setHandler(webAppContext); 

server.start(); 

我的目的是使用Servlet API 3.0运行。当我编译我的项目的Jetty部分时,这工作正常。但是,当我添加一个使用老版本Jetty(Hadoop核心)的外部库时,我的嵌入式Jetty服务器降级到2.5,并在调用HttpRequest#getParts时抛出NoSuchMethodError。我如何强制我的Jetty服务器与Java Servlets 3.0一起运行?

我使用的是Jetty 8.1.16.v20140903。

回答

1

如果使用构建工具,请从hadoop依赖关系中排除jetty和servlet-api作品。

只要确保你不使用老版本的Jetty。

+0

就是这样或多或少 – fdsa