最近在把jboss從4.2.2更新到6.0.0時候,遇到各種各樣的問題,主要都是類版本沖突,好容易把問題都找出來伺服器run起來之前,第一次通路抛出了這個異常
An exception or error occurred in the container during the request processing: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getEffectiveSessionTrackingModes()Ljava/util/Set;
at org.apache.catalina.connector.CoyoteAdapter.postParseRequest(CoyoteAdapter.java:567)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:359)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951)
at java.lang.Thread.run(Thread.java:679) [:1.6.0_22]
搜了一下,下面這篇文章講得比較仔細,果斷分享之
http://stackoverflow.com/questions/8969497/java-lang-nosuchmethoderror-javax-servlet-servletcontext-geteffectivesessiont
貼出内容:
java.lang.NoSuchMethodError: javax.servlet.ServletContext.getEffectiveSessionTrackingModes()Ljava/util/Set;
This method is introduced in Servlet 3.0. This error can have at least the following causes:
- Your
is not declared conform at least Servlet 3.0.web.xml
- Your servlet container does not support at least Servlet 3.0.
- You have servlet container specific libraries of an older version in
./WEB-INF/lib
To solve this problem,
- Ensure that your
root declaration conforms Servlet 3.0:web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <!-- Config here. --> </web-app>
- Ensure that you're deploying to a Servlet 3.0 compatible container. In case of JBoss AS that would be at least version 6.0.0.
- Ensure that you don't have those libraries in
. They do not belong there. This is a common beginner's mistake to "solve" compilation errors they faced in their IDE. See also How do I import the javax.servlet API in my Eclipse project?/WEB-INF/lib
You've declared your
web.xml
conform Servlet 2.2. This is definitely wrong. Fix it accordingly.