Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 426|回复: 0

关于使用maven + Tomcat7-maven-plugin管理并运行web项目抛出cannot be cast to javax.servlet.Servlet的问题和解决

[复制链接]
  • TA的每日心情
    奋斗
    2024-6-6 10:50
  • 签到天数: 750 天

    [LV.10]以坛为家III

    2034

    主题

    2092

    帖子

    70万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    706216
    发表于 2021-5-2 11:00:49 | 显示全部楼层 |阅读模式

    最近看到一个javaweb的教程  http://www.in28minutes.com/first-java-web-application-with-jsp-and-servlets-in-25-steps

    里面使用maven管理项目的打包和发布,遂也想使用maven搭建并管理一下项目

    被一个问题卡了很久。这个问题,也算以前自己埋的坑,现在总结一下:

    首先, 这个问题是由jar重复引入引起的所以报

    一个最简单的web项目结构   参考这个搭建

    https://blog.csdn.net/a992036795/article/details/53063962  配置maven等环境 

    https://github.com/in28minutes/JavaWebApplicationStepByStep/blob/master/Step01.md 具体的项目

     

     

     

     

    在运行 maven build (goals为 clean install tomcat7:run )的时候也都成功:

     

    但访问发布地址的时候失败

    严重: Allocate exception for servlet servletTest.LoginServlet
    java.lang.ClassCastException: servletTest.LoginServlet cannot be cast to javax.servlet.Servlet
        at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1144)
        at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:865)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:136)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:745)
    异常信息

     

    查了一下, 大部分都是因为servlet-api的作用于设置的不对。但是我的不是

    pom.xml的依赖和插件配置:

     1 <dependencies>
     2         <dependency>
     3             <groupId>javax</groupId>
     4             <artifactId>javaee-web-api</artifactId>
     5             <version>6.0</version>
     6             <scope>provided</scope>
     7         </dependency>
     8     </dependencies>
     9     
    10     <build>
    11         <pluginManagement>
    12             <plugins>
    13                 <plugin>
    14                     <groupId>org.apache.maven.plugins</groupId>
    15                     <artifactId>maven-compiler-plugin</artifactId>
    16                     <version>3.2</version>
    17                     <configuration>
    18                         <verbose>true</verbose>
    19                         <source>1.7</source>
    20                         <target>1.7</target>
    21                         <showWarnings>true</showWarnings>
    22                     </configuration>
    23                 </plugin>
    24                 <plugin>
    25                     <groupId>org.apache.tomcat.maven</groupId>
    26                     <artifactId>tomcat7-maven-plugin</artifactId>
    27                     <version>2.2</version>
    28                     <configuration>
    29                         <uriEncoding>UTF-8</uriEncoding>
    30                         <url>http://127.0.0.1:8080/manager/text</url>
    31                         <path>/</path>
    32                         <server>tomcat7</server>
    33                         <contextReloadable>true</contextReloadable>
    34                     </configuration>
    35                 </plugin>
    36             </plugins>
    37         </pluginManagement>
    38         <finalName>servletTest</finalName>
    39     </build>
    pom.xml

     

     

    可以看到

    javaee-web-api 中作用域有配置 provided, 并且我检查了打包后的文件,里面确实没有将这个jar包打包进去

     

    ps:我不用插件自带的tomcat而启用本地的tomcat,然后使用插件部署(tomcat7:deploy), 就可以解决不知道为什么这两个jar包不冲突(有大神可以解答一下吗)

     

    最后看到了这个https://blog.csdn.net/qq_31556881/article/details/77411258, 然后解决了

    原因就是, 我的环境变量中配置的JRE也有servlet-api.jar(忘记是什么时候加进去的了).

    所以会报错. 删除后就解决了

     

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-6-17 07:45 , Processed in 0.058706 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表