问一个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");
}
}
比较有可能是你web.xml中配置HelloServlet的包名出错,或名称出错
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
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