2013-02-19 3 views
0

Мой окр Jetty 8,1ServletRequest NoSuchMethodError

public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { 
    //this line prints org.eclipse.jetty.server.Request 
    System.out.println("class is "+request.getClass().getName()); 

    org.eclipse.jetty.server.Request jettyRequest = (org.eclipse.jetty.server.Request)request; 
    //request.getServletContext();//this line fails with noSuchMethodError 
    jettyRequest.getServletContext(); // this line works 

    ... 

Может кто-нибудь объяснить это ....?

ответ

2

Ваш webapp не использует сервлет API 3.0.

Это не удастся, если вы используете Servlet API 2.5 (например).

Удостоверьтесь, что ваш WEB-INF/web.xml вашего веб-сервера установлен на Servlet API 3.0, а также убедитесь, что любые банки сервлета-api, которые могут быть у вас в WEB-INF/lib, удаляются.

+0

Ссылка: http://docs.oracle.com/javaee/6/api/javax/servlet/ServletRequest.html#getServletContext() – madth3

+0

Почему этот вызов функции работает, если я отбрасываю объект так же, как и в коде выше? – root1982

+0

Вы отправляете его в 'org.eclipse.jetty.server.Request' (внутренний класс для Jetty), который использовал этот метод в течение многих лет, поскольку он является полезным методом для предоставления базовой поддержки сервлетов. Однако спецификация servlet-api недавно добавила ее в сервлет 3.0 api. (см. ссылку javadoc от madth3) –

Смежные вопросы