我这些天真的很疯狂,我正在努力开发一个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,但没有。 我真的无法理解。
提前致谢。
答案 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也可能没有恢复它在后台所做的更改。因此,执行这两个步骤将确保它与用户更改匹配及其背景更改。
希望它有助于解决您的问题。