错误500 - Wrapper找不到servlet类Tomcat6

时间:2012-09-24 22:52:49

标签: java servlets tomcat6

我这些天真的很疯狂,我正在努力开发一个servlet,但我真的无法理解为什么这个无法工作。

以下是代码:

import java.io.IOException;
import javax.servlet.ServletException;

import java.io.BufferedReader;
import java.io.PrintWriter;

import javax.servlet.ServletResponse;
import javax.servlet.ServletRequest;
import javax.servlet.GenericServlet;

public class WipdServlet extends GenericServlet 
{
    public void service(ServletRequest request, ServletResponse response)
    throws IOException {
        PrintWriter out = response.getWriter();

        out.println("<html>");
        out.println("<body>");
        out.println("<h1>ssup WIPD Servlet</h1>");
        out.println("Content Type: " + request.getContentType());
        out.println("Content Length: " + request.getContentLength());
        out.println("</body>");
        out.println("</html>"); 

    }
}

和web.xml:

<web-app>
    <servlet>
        <servlet-name>Wipd</servlet-name>
        <servlet-class>WipdServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Wipd</servlet-name>
            <url-pattern>/wipd</url-pattern>    
    </servlet-mapping>
</web-app>

servlet位于:

/var/lib/tomcat6/webapps/wipd/

对于这项工作,我需要在运行在VM上的Debian上安装Tomcat6下运行servlet,我目前正在使用servlet-api处理我的Gentoo,在Gentoo上运行javac之后我将文件.class放在Debian上。 但如果我冲浪:

http://192.168.0.177:8080/wipd/wipd.

我明白了:

  

javax.servlet.ServletException:Wrapper找不到servlet类   WipdServlet或它依赖的类     org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)     org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)     org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)     org.apache.coyote.http11.Http11Protocol $ Http11ConnectionHandler.process(Http11Protocol.java:602)     org.apache.tomcat.util.net.JIoEndpoint $ Worker.run(JIoEndpoint.java:489)     java.lang.Thread.run(Thread.java:636)

我甚至尝试将类放在一个包中,并编辑指定包的web.xml,但没有。 我真的无法理解。

提前致谢。

3 个答案:

答案 0 :(得分:0)

从异常中我可以看到你的班级不在包里。检查此link,其中描述了与您类似的问题。

答案 1 :(得分:0)

您需要将servlet放在某个包中。进行以下更改 -

package a.b.c; // added

public class WipdServlet extends GenericServlet {

    // .. other code
}

web.xml: -

<web-app>
    <servlet>
        <servlet-name>Wipd</servlet-name>
        <servlet-class>a.b.c.WipdServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Wipd</servlet-name>
        <url-pattern>/wipd</url-pattern>    
    </servlet-mapping>
</web-app>

部署后,您应该在以下位置找到您的课程 -

/var/lib/tomcat6/webapps/wipd/WEB-INF/classes/a/b/c/WipdServlet.class

答案 2 :(得分:0)

我也遇到了同样的问题。实际上我的一个程序在几次更改之后就已经工作了,这显示了我的错误。我甚至撤消了恢复变化,仍然发生在我身上。 最后,我为我的场景找到了一个有效的解决方案。

SIMPLE:

1.只需尝试清理项目并再次运行。如果它显示相同的错误,如果您确定代码没有任何问题,那么

2.启用&#34;自动构建&#34;菜单项&#34;项目&#34;菜单,并尝试清理您的项目。这次对我有用。

听说这是因为当我们进行一些更改并运行时,eclipse也会在其背景中进行一些更改。因此,即使我们恢复了这些变化,eclipse也可能没有恢复它在后台所做的更改。因此,执行这两个步骤将确保它与用户更改匹配及其背景更改。

希望它有助于解决您的问题。