HTTP状态 500 - 内部服务器错误

来源:2-3 第一个Servlet

慕粉1712150383

2023-01-02 18:07:35

类型 异常报告
消息 实例化Servlet类[com.imooc.servlet.FirstServlet]异常
描述 服务器遇到一个意外的情况,阻止它完成请求。
例外情况
javax.servlet.ServletException: 实例化Servlet类[com.imooc.servlet.FirstServlet]异常
	org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:544)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
	org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:698)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:364)
	org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:616)
	org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:831)
	org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1629)
	org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	java.lang.Thread.run(Thread.java:750)
根本原因。
java.lang.ClassNotFoundException: com.imooc.servlet.FirstServlet
	org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1372)
	org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1195)
	org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:544)
	org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
	org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:698)
	org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:364)
	org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:616)
	org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:831)
	org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1629)
	org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	java.lang.Thread.run(Thread.java:750)
):注意 主要问题的全部 stack 信息可以在 server logs 里查看
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <servlet>
        <servlet-name>first</servlet-name>
        <servlet-class>com.imooc.servlet.FirstServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>first</servlet-name>
        <url-pattern>/hi</url-pattern>
    </servlet-mapping>
</web-app>
package com.imooc.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

public class FirstServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String name = req.getParameter("name");
        String html = "<h1 style='color:red'>hi," + name + "!</h1><hr>";
        System.out.println("返回给浏览器的响应内容为:" + html);
        PrintWriter out = resp.getWriter();
        out.println(html);
    }
}

相关截图:

https://img.mukewang.com/climg/63b2acb4090b8e2e19060964.jpg

第一次可以正常运行,重启tomcat第二次运行就报错了

写回答

1回答

好帮手慕小尤

2023-01-02

同学你好,根据上述报错信息:找不到FirstServlet类,这里应该是同学的out目录没有classes导致的,同学可参考如下两种方式解决:

    1、如果是新创建项目,创建好项目后,先创建一个类,然后build Project,之后再配置tomcat,就不会出现out目录找不到classes文件的情况。

    2、找到项目所在的本地目录,然后关闭IDEA,删除本地项目中的.idea目录,重新打开项目,配置web模块和tomcat,删除target和out目录,重新运行项目即可。

祝学习愉快!

0

0 学习 · 9886 问题

查看课程