java.lang.NoSuchMethodError: javax.servlet.ServletContext.getEffectiveSessionTrackingModes () Ljava / util / Set; - PullRequest
2 голосов
/ 23 января 2012

Я хочу иметь сервлет для обработки входных данных из отдельной Java-программы. как развернуть этот сервлет в jboss. Я поместил файл servlet.class в WEB-INF / classes и в web.xml я дал отображение URL сервлета как ".do". Из моей клиентской программы на Java я открыл подключенный к сервлету объект URL. используя localhost: 8080 / .do. НО я получаю следующую ошибку:

  ERROR [org.apache.catalina.connector.CoyoteAdapter] 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)

Содержимое файла web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "java.sun.com/j2ee/dtds/web-app_2_2.dtd">; 
<web-app> 
     <servlet>
         <servlet-name>ReverseServlet</servlet-name> 
         <servlet-class>ReverseServlet</servlet-class> 
     </servlet> 
     <servlet-mapping>
          <servlet-name>ReverseServlet</servlet-name> 
          <url-pattern>/*.do</url-pattern> 
     </servlet-mapping> 
</web-app>

1 Ответ

11 голосов
/ 23 января 2012

java.lang.NoSuchMethodError: javax.servlet.ServletContext.getEffectiveSessionTrackingModes () Ljava / util / Set;

Этот метод введен в Servlet 3.0. Эта ошибка может иметь по крайней мере следующие причины:

  1. Ваш web.xml не объявлен соответствующим как минимум Servlet 3.0.

  2. Ваш контейнер сервлетов не поддерживает как минимум Servlet 3.0.

  3. В /WEB-INF/lib.

Чтобы решить эту проблему,

  1. Убедитесь, что ваше корневое объявление web.xml соответствует сервлету 3.0:

    <?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>
    
  2. Убедитесь, что вы развертываете в Servlet 3.0-совместимый контейнер. В случае JBoss AS это будет как минимум версия 6.0.0.

  3. Убедитесь, что у вас нет этих библиотек в /WEB-INF/lib. Они не принадлежат там. Это распространенная ошибка новичка - «исправить» ошибки компиляции, с которыми они столкнулись в своей IDE. См. Также Как импортировать API javax.servlet в мой проект Eclipse?

Вы заявили, что ваш web.xml соответствует сервлету 2.2. Это определенно неправильно. Исправьте это соответствующим образом.

...