[英]NoSuchMethodError while calling response.getStatus()
I suppose this is some kind of dependency problem so here is my tree: 我想这是某种依赖问题,所以这是我的树:
[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
From what I found out, spring 4.1.1 is supposed to work with javax.servlet 3.1.0 but I'm getting java.lang.NoSuchMethodError: javax.servlet.http.HttpServletResponse.getStatus()I when calling response.getStatus() inside my interceptor. 根据我的发现,spring 4.1.1应该与javax.servlet 3.1.0一起工作,但我得到java.lang.NoSuchMethodError:javax.servlet.http.HttpServletResponse.getStatus()我在调用response.getStatus时(在我的拦截器里面。
I'd be glad if someone could help. 如果有人可以提供帮助,我会很高兴。 Thanks in advance.
提前致谢。
EDIT : Added web.xml 编辑 :添加了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: Changed the following: 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">
to: 至:
<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">
but I'm still getting the error when calling response.getStatus(); 但是在调用response.getStatus()时我仍然收到错误;
I was running my app on a simple tomcat:run. 我在一个简单的tomcat上运行我的应用程序:运行。 After deploying it to war and making sure I'm using Tomcat 7 everything is fine.
在将它部署到战争并确保我使用Tomcat 7后,一切都很好。 Thanks to all commentators, you pointed me at the right direction.
感谢所有评论员,你指出了我正确的方向。 Cheers.
干杯。
EDIT : Keep in mind that tomcat 7 does not support servlets 3.1 so you either have to use servlet 3.0 with tomcat 7 or servlet 3.1 and tomcat 8. 编辑:请记住,tomcat 7不支持servlet 3.1,所以你必须使用servlet 3.0与tomcat 7或servlet 3.1和tomcat 8。
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
. 这是在4.1.1版本中已解决的问题,使用版本4.1.1或更高版本,或设置
DispatcherServlet
bean,将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, setpublishEvents
tofalse
.这是在4.1.1版本中已解决的问题,使用版本4.1.1或更高版本,或设置
DispatcherServlet
bean,将publishEvents
设置为false
。
I had the same issue and it was related with groovy. 我有同样的问题,它与groovy有关。 I added
groovy
to the classpath (external libraries) using my IDE from sdk
sources instead of using maven
or gradle
dependencies. 我使用来自
sdk
源的IDE而不是使用maven
或gradle
依赖项将groovy
添加到类路径(外部库)中。
It seems HttpServletResponse
which comes with a dependency of groovy
doesn't have the getStatus()
methods. 似乎
HttpServletResponse
带有groovy
的依赖,它没有getStatus()
方法。 So finally, I removed from the classpath and add it in maven and it works. 最后,我从类路径中删除并在maven中添加它并且它可以工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.