简体   繁体   English

Java Servlet - 实例化 servlet 类的 HTTP 状态 500 错误

[英]Java Servlets - HTTP Status 500 Error instantiating servlet class

I am trying to instantiate my servlet but I am getting this 500 Status Error.我正在尝试实例化我的 servlet,但我收到了这个 500 状态错误。 I have read other posts but none of the proposed solutions seem to apply to my error.我已阅读其他帖子,但建议的解决方案似乎都不适用于我的错误。

My SampServlet Class我的 SampServlet 类

package com.example;

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "SampServlet", value = "/SampServlet")
public class SampServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doPost(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //define that we want to send HTML to our browser
        response.setContentType("text/html");
        // create our PrintWriter that allows us to write out text as well as write HTML to the screen
        PrintWriter out = response.getWriter();
        try {
            out.println("<h3>Testing Servlets</h3>");
        }
        finally {
            out.close();
        }
    }
}

my web.xml我的 web.xml

<?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_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>SampServlet</servlet-name>
        <servlet-class>com.example.SampServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>SampServlet</servlet-name>
        <url-pattern>/SampServlet</url-pattern>
    </servlet-mapping>
</web-app>

Project Structure enter image description here项目结构在此处输入图像描述

the error I'm getting when I go to http://localhost:8080/SampServlet我去 http://localhost:8080/SampServlet 时遇到的错误

Message Error instantiating servlet class [com.example.SampServlet]

Description The server encountered an unexpected condition that prevented it from fulfilling the request.

Exception

jakarta.servlet.ServletException: Error instantiating servlet class [com.example.SampServlet]
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:356)
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:867)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1716)
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
    org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.base/java.lang.Thread.run(Thread.java:833)
Root Cause

java.lang.NoClassDefFoundError: javax/servlet/http/HttpServlet
    java.base/java.lang.ClassLoader.defineClass1(Native Method)
    java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1013)
    java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
    org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2527)
    org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:877)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1413)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1257)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:356)
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:867)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1716)
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
    org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.base/java.lang.Thread.run(Thread.java:833)
Root Cause

java.lang.ClassNotFoundException: javax.servlet.http.HttpServlet
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1449)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1257)
    java.base/java.lang.ClassLoader.defineClass1(Native Method)
    java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1013)
    java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
    org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2527)
    org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:877)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1413)
    org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1257)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92)
    org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:690)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:356)
    org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:399)
    org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
    org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:867)
    org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1716)
    org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
    org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
    org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
    org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
    java.base/java.lang.Thread.run(Thread.java:833)
Note The full stack trace of the root cause is available in the server logs.

Tomcat 10.0 and above use the new Jakarta EE packages for code. Tomcat 10.0 及更高版本使用新的 Jakarta EE 包进行代码。 This means, for example, that javax.servlet.http.HttpServlet is now jakarta.servlet.http.HttpServlet .例如,这意味着javax.servlet.http.HttpServlet现在是jakarta.servlet.http.HttpServlet The change started in version 9 of the EE spec thanks to Oracle and their hostility towards the development community.由于 Oracle 及其对开发社区的敌意,这一变化始于 EE 规范的第 9 版。

Your code should start instead with something like:您的代码应该以以下内容开头:

import jakarta.servlet.*;
import jakarta.servlet.http.*;
import jakarta.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "SampServlet", value = "/SampServlet")
public class SampServlet extends HttpServlet {

to use the new specs.使用新规格。 Tomcat also has an open source tool that can convert a larger code base from the EE 8 to EE 9 spec. Tomcat 还有一个开源工具,可以将更大的代码库从 EE 8 转换为 EE 9 规范。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 HTTP 状态 500 - 实例化 servlet 类 servlets.LoginServlet 时出错 - HTTP Status 500 - Error instantiating servlet class servlets.LoginServlet HTTP状态500-由DeploymentDescriptorLoadException引起的实例化Servlet类错误 - HTTP Status 500 - Error instantiating servlet class caused by DeploymentDescriptorLoadException HTTP 状态 500 - 实例化 servlet 时出错 class pkg.coreServlet - HTTP Status 500 - Error instantiating servlet class pkg.coreServlet HTTP状态500-实例化servlet类com.DataFetch时出错 - HTTP Status 500 - Error instantiating servlet class com.DataFetch HTTP 状态 500 - 在用户注册中实例化 servlet 类时出错 - HTTP Status 500 - Error instantiating servlet class in user registration HTTP 状态 500 – 实例化 servlet class [NewServlet] 的内部服务器错误 - HTTP Status 500 – Internal Server Error instantiating servlet class [NewServlet] HTTP状态500-实例化Servlet类LoginServlet时出错 - HTTP Status 500 - Error instantiating servlet class LoginServlet HTTP 状态 500 - 实例化 servlet 类 com.Model 时出错 - HTTP Status 500 - Error instantiating servlet class com.Model Java 动态 Web 项目 HTTP 状态 500 - 实例化 servlet 类时出错 - Java Dynamic Web Project HTTP Status 500 - Error instantiating servlet class TTP状态500-实例化servlet类com.zestedesavoir.servlets.Test&gt;时出错 - TTP Status 500 - Error instantiating servlet class com.zestedesavoir.servlets.Test>
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM