概述
在今天尝试配置第一个servlet时出现了500
类com.yqc.comtroller.OneServlet不是Servlet
异常报告
消息
==类com.yqc.comtroller.OneServlet不是Servlet==
描述 服务器遇到一个意外的情况,阻止它完成请求。
例外情况
jakarta.servlet.ServletException: 类com.yqc.comtroller.OneServlet不是Servlet
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
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:353)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:870)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1696)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.base/java.lang.Thread.run(Thread.java:830)
根本原因。
java.lang.ClassCastException: class com.yqc.comtroller.OneServlet cannot be cast to class jakarta.servlet.Servlet (com.yqc.comtroller.OneServlet is in unnamed module of loader org.apache.catalina.loader.ParallelWebappClassLoader @3db9d95b; jakarta.servlet.Servlet is in unnamed module of loader java.net.URLClassLoader @50d0686)
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:543)
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:353)
org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:374)
org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:870)
org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1696)
org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
java.base/java.lang.Thread.run(Thread.java:830)
):注意 主要问题的全部 stack 信息可以在 server logs 里查看
发现
类com.yqc.comtroller.OneServlet不是Servlet
解决途径
- 第一步
- 第二步
- 方法一
- 方法二
第一步
检查tomcat有关的jar包是否完整(如:下图)以及存放路径是否为webWEB-INFlib
第二步
如果确认第一步没有问题
请查看tomcat版本
最新的是tomcat10,
而tomcat10有个最大的变动就是Tomcat 10 m1将JavaEE也换成了Jakarta® EE
Jakarta® EE较以前的JavaEE有一个非常非常重要的更新:包名不再是"javax.servlet.“而是改成了"jakarta.servlet.”
方法一
将所有的javax.servlet替换成jakarta.servlet.这是我的代码
package com.yqc.comtroller;
import java.io.IOException;
public class OneServlet extends jakarta.servlet.http.HttpServlet {
protected void doPost(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) throws jakarta.servlet.ServletException, IOException {
}
protected void doGet(jakarta.servlet.http.HttpServletRequest request, jakarta.servlet.http.HttpServletResponse response) throws jakarta.servlet.ServletException, IOException {
System.out.println("fsdjfsd");
}
}
方法二
将tomcat10卸载改为tomcat9 就可以了
参考文章一
参考文章二
最后
以上就是忧心菠萝为你收集整理的servlet配置相关:HTTP状态 500 - 内部服务器错误问题第一步第二步的全部内容,希望文章能够帮你解决servlet配置相关:HTTP状态 500 - 内部服务器错误问题第一步第二步所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复