IDEA 的 Jetty-runner 插件运行 JSP 页面报错:No org.apache.tomcat.InstanceManager set in ServletContext

红薯 发布于 2018/09/11 18:51
阅读 11K+
收藏 0

1月18日,北京,聊聊2025如何加入技术开发?

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 的信息?

加载中
0
红薯
红薯

终于解决了,主要还是版本的对应关系的问题。

需要确保 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 的依赖,否则会出错!

0
红薯
红薯

引入 jsper 

<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;

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部