cannot be cast to javax.Servlet 解决方法

本文介绍了解决在使用Maven创建的Web项目中启动Tomcat时遇到的Servlet与Tomcat内部Servlet-API冲突的问题。主要步骤包括:确保Servlet继承自HttpServlet,检查web.xml配置,以及调整Maven依赖范围为provided。

出现的bug,在使用maven创建的web项目启动tomcat时,出现了
严重: Allocate exception for servlet LOGIN
java.lang.ClassCastException: class club.jming.servlet.HelloServlet cannot be cast to class javax.servlet.Servlet (club.jming.servlet.HelloServlet is in unnamed module of loader org.apache.catalina.loader.WebappClassLoader @37baddde; javax.servlet.Servlet is in unnamed module of loader org.codehaus.plexus.classworlds.realm.ClassRealm @4defd42)
错误排查
  1. servlet没有继承HttpServlet
  2. web.xml配置有误
  3. tomcat的servlet-api.jar与maven中的servlet-api.jar发生jar冲突
首先检查servlet是否继承了HttpServlet
public class HelloServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response){
        try {
            response.getWriter().println("<h1>Hello Servlet!</h1>");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
其次,检查web.xml配置
<web-app>
  <display-name>Archetype Created Web Application</display-name>
    <servlet>
        <servlet-name>LOGIN</servlet-name>
        <servlet-class>club.jming.servlet.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>LOGIN</servlet-name>
        <url-pattern>/login</url-pattern>
    </servlet-mapping>
</web-app>
最后问题还是没有解决
在翻阅网上资料,发现maven依赖中的
      <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>servlet-api</artifactId>
          <version>3.0-alpha-1</version>
      </dependency>
与tomcat中的servlet-api.jar存在jar冲突,解决方法,修改maven中pom.xml里jar的依赖范围
      <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>servlet-api</artifactId>
          <version>3.0-alpha-1</version>
          <scope>provided</scope>
      </dependency>
至此,web项目顺利运行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值