【问题标题】:javax.servlet.ServletException: Wrapper cannot find servlet classjavax.servlet.ServletException:包装器找不到 servlet 类
【发布时间】:2023-03-28 08:20:02
【问题描述】:

我从“Jasper Reports for Java Develper”(第 3 章)制作了一个 servlet,它将在浏览器上显示 Jasper Report。

servlet 如下所示:

public class FirstReportSendToBrowserServlet extends HttpServlet {

    //just implement doGet in the block
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {               
        // ...            
    }
}

然后我编译了 servlet 并将其放入 Tomcat。当我启动tomcat时,它运行良好。但是servlet不起作用,我得到以下异常:

javax.servlet.ServletException: Wrapper cannot find servlet class FirstReportSendToBrowserServlet or a class it depends on
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:869)
    org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:664)
    org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
    org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
    org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
    java.lang.Thread.run(Thread.java:619) 

但是servlet类已经部署在Tomcat中了,谁能给点提示?

【问题讨论】:

    标签: java servlets


    【解决方案1】:

    正如异常消息提示的那样,您的 servlet 类不在包中(通常会显示完整的限定类名)。您应该始终将 servlet 类(和所有其他 Java 类)放在一个包中。

    package com.parsifal; // <--- Here.
    
    public class FirstReportSendToBrowserServlet extends HttpServlet {
    
        // ...
    
    }
    

    默认包中的类对于驻留在包中的类(例如 Tomcat 本身)是不可见的。

    【讨论】:

    • 将servlet类打包后问题依旧。我会留意的。
    猜你喜欢
    • 2014-11-13
    • 2021-05-11
    • 2014-04-21
    • 2017-11-04
    • 1970-01-01
    • 2017-05-15
    • 2017-09-26
    • 2018-04-16
    相关资源
    最近更新 更多