NeQrhk
2015-11-17 06:46
采纳率: 30.6%
浏览 1.6k
已采纳

问一个web在tomcat中的servlet简单问题,刚学servlet编译一个文件通不过

在我tomcat中运行后
打开自己编写的一个HelloServlet文件打不开。怎么解决好?

错误500

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

java.lang.NoClassDefFoundError: exa/HelloServlet (wrong name: HelloServlet)
java.lang.ClassLoader.defineClass1(Native Method)
java.lang.ClassLoader.defineClass(ClassLoader.java:800)
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2823)
org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1160)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1655)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1533)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:461)
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928)
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:987)
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539)
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:300)
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
java.lang.Thread.run(Thread.java:745)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.23 logs.

说HelloServlet没有
不过我这个类是有的 HelloServlet.class编译出来并且放在WEB-INF/Classes/exa里面了。
其中web.xml是这样子写的

HelloServlet
exa.HelloServlet


HelloServlet
/serv

还有HelloServlet文件编译成功前是这样写的
import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.annotation.WebServlet;
class HelloServlet extends HttpServlet{
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("HelloWorld I am Servlet");

}

}

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • Evankaka 2015-11-17 11:18
    已采纳

    比较有可能是你web.xml中配置HelloServlet的包名出错,或名称出错

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • NeQrhk 2015-11-17 06:48

    web.xml是这样的,刚才出来不知道怎么少了一些字符
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-

    app_2_4.xsd"
    version="2.4">

    HelloServlet
    exa.HelloServlet


    HelloServlet
    /serv

    评论
    解决 无用
    打赏 举报
  • NeQrhk 2015-11-17 06:49

    web.xml是这样的,刚才出来不知道怎么少了一些字符
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <web-app xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-

    app_2_4.xsd"
    version="2.4">

    HelloServlet
    exa.HelloServlet


    HelloServlet
    /serv

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题