IntelliJ IDEA 版本 2018.2.3
Jetty-Runner 版本 1.2.1
运行一个简简单单的 web 应用,只有一个 test.jsp 文件报错:
java.lang.IllegalStateException: No org.apache.tomcat.InstanceManager set in ServletContext
这是啥情况呢? 怎么还有 tomcat 的信息?
<p>终于解决了,主要还是版本的对应关系的问题。</p>
需要确保 web.xml 中定义的 servlet 版本和 pom.xml 中引入的 servlet 版本是一致的
web.xml
<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">
pom.xml
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
不需要 jasper 的依赖,否则会出错!
<p>引入 jsper </p>
<dependency>
<groupId>org.apache.tomcat</groupId>
<artifactId>jasper</artifactId>
<version>6.0.53</version>
</dependency>
然后在 web.xml 中配置 JSP Servlet
<servlet id="jsp">
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>logVerbosityLevel</param-name>
<param-value>DEBUG</param-value>
</init-param>
<init-param>
<param-name>fork</param-name>
<param-value>>true</param-value>
</init-param>
<init-param>
<param-name>keepgenerated</param-name>
<param-value>>true</param-value>
</init-param>
<load-on-startup>0</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
现在报错信息变成:
java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequestWrapper.getServletContext()Ljavax/servlet/ServletContext;
你这是自问自答么
测试
没人搞定只好自己研究
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。