开发者社区> 问答> 正文

IDEA 的 Jetty-runner 插件运行 JSP 页面报错:No org?400报错

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

展开
收起
爱吃鱼的程序员 2020-06-06 15:17:54 737 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB
                        <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;

                        你这是自问自答么 
                    
    
                            测试 
                        
    
                            没人搞定只好自己研究 
    
    2020-06-06 15:18:13
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
蚂蚁金服高级开发工程师萧恺:IDEA 插件开发入门教程 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载