2014-12-02 5 views
2

Я полагаю, что это какой-то проблемы зависимости так вот мое дерево:NoSuchMethodError при вызове response.getStatus()

[INFO] Sikor:BrowserGame:war:1.0-SNAPSHOT 
[INFO] +- junit:junit:jar:3.8.1:test 
[INFO] +- org.springframework:spring-context:jar:4.1.1.RELEASE:compile 
[INFO] | +- org.springframework:spring-aop:jar:4.1.1.RELEASE:compile 
[INFO] | +- org.springframework:spring-beans:jar:4.1.1.RELEASE:compile 
[INFO] | +- org.springframework:spring-core:jar:4.1.1.RELEASE:compile 
[INFO] | | \- commons-logging:commons-logging:jar:1.1.3:compile 
[INFO] | \- org.springframework:spring-expression:jar:4.1.1.RELEASE:compile 
[INFO] +- org.springframework:spring-webmvc:jar:4.1.1.RELEASE:compile 
[INFO] | \- org.springframework:spring-web:jar:4.1.1.RELEASE:compile 
[INFO] +- org.springframework:spring-context-support:jar:4.1.1.RELEASE:compile 
[INFO] +- org.springframework.security:spring-security-web:jar:3.2.5.RELEASE:compile 
[INFO] | +- aopalliance:aopalliance:jar:1.0:compile 
[INFO] | \- org.springframework.security:spring-security-core:jar:3.2.5.RELEASE:compile 
[INFO] +- org.springframework.security:spring-security-config:jar:3.2.5.RELEASE:compile 
[INFO] +- org.springframework.security:spring-security-taglibs:jar:3.2.5.RELEASE:compile 
[INFO] | \- org.springframework.security:spring-security-acl:jar:3.2.5.RELEASE:compile 
[INFO] +- org.thymeleaf:thymeleaf-spring4:jar:2.1.3.RELEASE:compile 
[INFO] | \- org.thymeleaf:thymeleaf:jar:2.1.3.RELEASE:compile 
[INFO] |  +- ognl:ognl:jar:3.0.6:compile 
[INFO] |  \- org.unbescape:unbescape:jar:1.0:compile 
[INFO] +- org.thymeleaf.extras:thymeleaf-extras-springsecurity3:jar:2.1.1.RELEASE:compile 
[INFO] +- nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect:jar:1.2.7:compile 
[INFO] +- org.hibernate:hibernate-entitymanager:jar:4.3.5.FINAL:compile 
[INFO] | +- org.jboss.logging:jboss-logging:jar:3.1.3.GA:compile 
[INFO] | +- org.jboss.logging:jboss-logging-annotations:jar:1.2.0.Beta1:compile 
[INFO] | +- org.hibernate:hibernate-core:jar:4.3.5.Final:compile 
[INFO] | | +- antlr:antlr:jar:2.7.7:compile 
[INFO] | | \- org.jboss:jandex:jar:1.1.0.Final:compile 
[INFO] | +- dom4j:dom4j:jar:1.6.1:compile 
[INFO] | | \- xml-apis:xml-apis:jar:1.0.b2:compile 
[INFO] | +- org.hibernate.common:hibernate-commons-annotations:jar:4.0.4.Final:compile 
[INFO] | +- org.hibernate.javax.persistence:hibernate-jpa-2.1-api:jar:1.0.0.Final:compile 
[INFO] | +- org.jboss.spec.javax.transaction:jboss-transaction-api_1.2_spec:jar:1.0.0.Final:compile 
[INFO] | \- org.javassist:javassist:jar:3.18.1-GA:compile 
[INFO] +- org.hibernate:hibernate-validator:jar:4.3.2.Final:compile 
[INFO] | \- javax.validation:validation-api:jar:1.0.0.GA:compile 
[INFO] +- mysql:mysql-connector-java:jar:5.1.32:compile 
[INFO] +- org.springframework:spring-orm:jar:4.1.1.RELEASE:compile 
[INFO] | +- org.springframework:spring-jdbc:jar:4.1.1.RELEASE:compile 
[INFO] | \- org.springframework:spring-tx:jar:4.1.1.RELEASE:compile 
[INFO] +- org.springframework.data:spring-data-jpa:jar:1.6.4.RELEASE:compile 
[INFO] | +- org.springframework.data:spring-data-commons:jar:1.8.4.RELEASE:compile 
[INFO] | +- org.aspectj:aspectjrt:jar:1.8.1:compile 
[INFO] | \- org.slf4j:jcl-over-slf4j:jar:1.7.7:runtime 
[INFO] +- javax.servlet:javax.servlet-api:jar:3.1.0:provided 
[INFO] +- org.slf4j:slf4j-api:jar:1.7.5:compile 
[INFO] +- org.slf4j:slf4j-log4j12:jar:1.6.1:compile 
[INFO] | \- log4j:log4j:jar:1.2.16:compile 
[INFO] \- javax.mail:mail:jar:1.4:compile 
[INFO] \- javax.activation:activation:jar:1.1:compile 

Из того, что я узнал, весна 4.1.1 должна работать с javax. сервлет 3.1.0, но я получаю java.lang.NoSuchMethodError: javax.servlet.http.HttpServletResponse.getStatus() I при вызове функции response.getStatus() внутри моего перехватчика.
Буду рад, если кто-то поможет. Заранее спасибо.

EDIT: Добавлено web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="2.5" 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_2_5.xsd"> 

    <servlet> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 
     <init-param> 
      <param-name>contextConfigLocation</param-name> 
      <param-value>/WEB-INF/config/mvc-dispatcher-servlet.xml</param-value> 
     </init-param> 
     <init-param> 
      <param-name>throwExceptionIfNoHandlerFound</param-name> 
      <param-value>true</param-value> 
     </init-param> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>mvc-dispatcher</servlet-name> 
     <url-pattern>/</url-pattern> 
    </servlet-mapping> 

    <filter> 
     <filter-name>springSecurityFilterChain</filter-name> 
     <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
    </filter> 
    <filter-mapping> 
     <filter-name>springSecurityFilterChain</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 

    <listener> 
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

    <context-param> 
     <param-name>contextConfigLocation</param-name> 
     <param-value> 
      /WEB-INF/config/root-context.xml 
     </param-value> 
    </context-param> 

</web-app> 



EDIT2: Изменено следующее:

<web-app version="2.5" 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_2_5.xsd"> 

к:

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 
     version="3.1"> 

но я 'все еще получаю ошибку при вызове response.getStatus();

+2

Вы проверили версию сервлета, которую используете в web.xml? –

+1

Да, такая ошибка почти всегда означает, что код был скомпилирован в отношении одной версии зависимости, но в конечном итоге работал с другой версией этой зависимости. Почти наверняка, что servlet-api 3 не является тем, что предоставляется во время выполнения. –

+0

Добавил мой web.xml. Я попытался изменить версию веб-приложения до 3.1, но он дал мне ошибку, так что она изменилась до 3.0, но NoSuchMethodError все еще там. – Sikor

ответ

4

Я запускал свое приложение на простом коте: бежал. После развертывания его на войне и убедившись, что я использую Tomcat 7, все в порядке. Спасибо всем комментаторам, вы указали мне в правильном направлении. Приветствия.

EDIT: Имейте в виду, что 7 кот не поддерживает сервлеты 3.1, так что вы должны либо использовать сервлет 3.0 с котом 7 или сервлета 3.1 и котом 8.

0

Это проблема, которая была решена в версии 4.1.1, используйте версию 4.1.1 или выше или установите фасоль DispatcherServlet, установите publishEvents на номер false.

This is a problem that has been resolved in version 4.1.1 release, use version 4.1.1 or higher, or set the DispatcherServlet bean, set publishEvents to false .

0

Я была такая же проблема, и это было связано с заводной. Я добавил groovy в путь к классам (внешние библиотеки), используя мою IDE из sdk источников вместо использования maven или gradle зависимостей.

Похоже, HttpServletResponse, который поставляется с зависимостью groovy, не имеет методов getStatus(). Итак, наконец, я удалился из класса и добавлю его в maven, и он работает.

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