maven构建web项目,cannot be cast to javax.servlet.Servlet

今天开发web的时候,需要用到servlet-api,于是在pom.xml中添加依赖

<dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>3.0-alpha-1</version>
        </dependency>

通过插件启动tomcat的时候,报错,里面有一段是这样的:

复制代码
Caused by: java.lang.LinkageError: loader constraint violation: loader (instance of org/apache/catalina/loader/WebappClassLoader) previously initiated loading for a different type with name "javax/servlet/ServletContext"
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:800)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:449)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:71)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:361)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
复制代码

产生的原因是:tomcat中也有servlet-api包,这样,发生了冲突

解决方法:添加<scope>provided</scope>,因为provided表明该包只在编译和测试的时候用,所以,当启动tomcat的时候,就不会冲突了,完整依赖如下:

复制代码
<dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>3.0-alpha-1</version>
            <scope>provided</scope>
        </dependency>
复制代码

转载于:https://www.cnblogs.com/xiaoxiaoccaiya/p/7692503.html

JAVA报错"cannot be cast to"是指在类型转换时出现错误。这个错误通常发生在代码中试图将一个类型转换为另一个类型,但是两个类型之间不存在继承关系或者类型转换是不允许的情况下。举个例子,如果我们试图将一个类型为com.bjpowernode.ba03.Student的对象强制转换为com.bjpowernode.ba01.Student的类型,就会出现ClassCastException报错。 另外,也有可能出现"cannot be cast to"的报错是因为在maven开发web应用程序时,引入的servlet-api.jar与其他jar包存在冲突。这个报错可能会显示"Offending class: javax/servlet/...",并提示"jar not loaded"。 此外,在复制包的过程中没有导入必要的包也可能导致"cannot be cast to"的报错。比如,当我们复制代码时,可能会忘记导入相关的包,从而导致类型转换错误。 总结来说,"cannot be cast to"的报错通常是由于类型转换错误或者包导入错误引起的。我们需要仔细检查代码中的类型转换和包导入的问题,以解决这类报错。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [spring中遇到的java.lang.ClassCastException中cannot be cast to报错(初学)](https://blog.csdn.net/m0_67393413/article/details/126116762)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [解决cannot be cast to javax.servlet.Filter 报错的问题](https://download.csdn.net/download/weixin_38565801/14046932)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值