今天项目jetty应用处理器处理请求时一直出现NoSuchMethodError: javax.servlet.http.HttpServletResponse.getStatus()I错误,查了下,发现是版本不对应导致的。我是利用jetty的,tomcat同样也会出现类似问题,解决方法类似。
jetty:6.1.26(6.1+)
spring:4.1.0(4.1+)
servlet:3.0.1(3.+)
原因查了后发现是这个版本jetty不支持servlet 3.0.1。
解决方法: 1、升级应用服务器(jetty,tomcat)到更高版本。
2、降低Spring版本到4.0.+版本。
以下为jetty支持的servlet版本:
版本号 | 发布及维护年份 | 托管平台 | JVM版本 | 支持的协议 | servlet版本 | JSP版本 | 目前状态 |
---|---|---|---|---|---|---|---|
9.3 | 2014 | Eclipse | 1.7 | HTTP/1.1, HTTP/2 RFC2616,javax.websocket, SPDY v3 | 3.1 | 2.3 | Experimental |
9.2 | 2014 | Eclipse | 1.7 | HTTP/1.1 RFC2616,javax.websocket, SPDY v3 | 3.1 | 2.3 | Stable |
8 | 2009-至今 | Eclipse/Codehaus | 1.6 | HTTP/1.1 RFC2616, WebSocket RFC 6455, SPDY v3 | 3.0 | 2.2 | Mature |
7 | 2008-至今 | Eclipse/Codehaus | 1.5 | HTTP/1.1 RFC2616, WebSocket RFC 6455, SPDY v3 | 2.5 | 2.1 | Mature |
6 | 2006-2010 | Codehaus | 1.4-1.5 | HTTP/1.1 RFC2616 | 2.5 | 2.0 | Venerable |
5 | 2003-2009 | Sourceforge | 1.2-1.5 | HTTP/1.1 RFC2616 | 2.4 | 2.0 | Deprecated |
4 | 2001-2006 | Sourceforge | 1.2,J2ME | HTTP/1.1 RFC2616 | 2.3 | 1.2 | Ancient |
3 | 1999-2002 | Sourceforge | 1.2 | HTTP/1.1 RFC2068 | 2.2 | 1.1 | Fossilized |
2 | 1998-2000 | Mortbay | 1.1 | HTTP/1.0 RFC1945 | 2.1 | 1.0 | Legendary |
1 | 1995-1998 | Mortbay | 1.0 | HTTP/1.0 RFC1945 | – | – | Mythical |