java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getAsyncContext()Ljavax/servlet/A

错误场景:

在用 Spring 的单元测试进行模拟请求时遇到下面的错误:

java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getAsyncContext()Ljavax/servlet/AsyncContext;

java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getAsyncContext()Ljavax/servlet/A

错误原因:

jar 包版本冲突

如图,pom 文件中,引入了 jstl 的依赖和 servlet-api 的依赖。因为 jstl 依赖于 servlet-api(2.5),而我们又引入了 servlet-api(3.1)。由此产生了冲突,故而报错。

java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getAsyncContext()Ljavax/servlet/A

解决办法:

方法一:更换新版本的 jstl。最稳妥的办法

方法二:将 servlet-api(3.1) 的依赖移到 jstl 依赖的上面。

注:方法二只能暂时解决当前报错,以后是否会引发其他错误还未可知,建议采用方法一

上一篇:HttpServletRequest


下一篇:SpringMVC拦截器的应用