本来正在做一个springmvc的入门案例,不料出现了一系列大大小小的问题,故在此记录。
首先就是导入相关依赖坐标这里,servlet依赖的坐标一定要指定scope为provided,否则会产生冲突。
然后还要注意配置tomcat7-maven-plugin时:
一开始我没有考虑我的tomcat是9的版本,然后肯定是无法配置成功的。出现了COMPILE FAILURE:
不再支持源选项 5。请使用 7 或更高版本。
看了网上别人的一些做法,我总结如下,我都配置了下面这些文件:
【1】Tomcat的conftomcat-users.xml
加入以下内容:
【2】Maven的confsettings.xml
加入如下内容:
tomcat9
【3】最后加入pom配置中
或: tomcat9 true 8080 / tomcat9 true
可能【1】【2】都配置了还是没用,可以试下【4】,可能是jdk版本的问题,日志还提示了encoding的问题(我是jdk15的版本)
【4】仅本项目:pom中加入properties标签
UTF-8 UTF-8 15 15 15
题外话:每一个maven项目创建时,pom文件都会自动带properties标签,好像是我改pom的时候不小心删掉了...(omg自己害死自己...)
【4】一劳永逸型:Maven的confsettings.xml(maven全局都是这个版本的jdk了,一改全改)
jdk-15 true15 UTF-8 15 15
【另】我推测还可能有别的奇奇怪怪的原因,比如下面这个:
Unrecognised tag: 'mirrors' (position: START_TAG seen ...rn --> rnrn.
这个就是Maven仓库的配置文件没写好的原因,这个明明就是标签对齐等格式问题。重新配置好后,进行clean再重新compile。
然后又出现了下面这个问题:
NoSuchMethodError: 'void javax.servlet.http.HttpServletResponse.setContentLengthLong(long)'
因为之前一直都用的最新的spring-Xxx依赖,现在最新的版本基本5.3.20起步,然后网上都说是因为依赖版本过高,于是改成5.3.Xx以下的:
可是又出现了新问题,Skipping non-war project,明明选中的就是这个web项目怎么会找不到project部署还成功build呢?
原来需要在Maven项目的pom中配置打包方式,对于web项目来说,要打包为war才能被部署成功。
然后基本就解决了全部遇到的问题,tomcat7:run启动项目,当日志最后提示如下信息时,不是卡住了而是成功启动并正在运行中的意思。
Starting ProtocolHandler ["http-bio-8080"]



