关于使用maven + Tomcat7-maven-plugin管理并运…
2018-06-21 06:54:22来源:未知 阅读 ()
最近看到一个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>
可以看到
javaee-web-api 中作用域有配置 provided, 并且我检查了打包后的文件,里面确实没有将这个jar包打包进去
ps:我不用插件自带的tomcat而启用本地的tomcat,然后使用插件部署(tomcat7:deploy), 就可以解决不知道为什么这两个jar包不冲突(有大神可以解答一下吗)
最后看到了这个https://blog.csdn.net/qq_31556881/article/details/77411258, 然后解决了
原因就是, 我的环境变量中配置的JRE也有servlet-api.jar(忘记是什么时候加进去的了).
所以会报错. 删除后就解决了
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- eclipse下创建Maven项目(包含webapp目录结构) 2020-06-09
- Maven安装与配置 2020-06-09
- 聊聊 OAuth 2.0 的 token expire_in 使用 2020-06-08
- IDEA下Maven的pom文件导入依赖出现Auto build completed wit 2020-06-07
- 为什么阿里巴巴Java开发手册中强制要求接口返回值不允许使用 2020-06-06
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash