这几天尝试自己搭建一套框架,一方面巩固一下基础,一方面尝试下各种新版本,结果就是——悲催,遇到了各种问题,解决起来简直吐血,以下总结下各种坑。
一、版本
1、VC层——Spring SpringMVC 4.1.6.RELEASE好吧,用到的基本都是最新版本,JDK 1.8+eclipse neno 2+tomcat 8.5.9+maven
二、坑
1、第一坑就是上来就把pom和各种配置文件都弄好了,因为是参考的成熟项目,以为只是换下版本号即可,结果悲催了。pom就不贴了,反正网上一大把,找找就好了。
配置完后,启动Tomcat,Duang!启不来...报错如下(只贴关键部分,下面一大堆就不贴了)
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost]]
at java.util.concurrent.FutureTask.report(Unknown Source)
at java.util.concurrent.FutureTask.get(Unknown Source)
我的没有说哪个jar包,所以只能一点点筛选,一般来说,先把除ssm核心jar以外的jar包注释,然后运行,可以启动,然后再一个个模块试别的,最终确定是shiro-web的问题。将本地maven下面关于这个jar包的文件夹删除,然后重新触发maven更新,问题解决。
2、解决之后,服务器起来了,但又开始大段的报错,部分问题很好处理,一般是配置文件中的引入class路径错误,建议每个class路径写完之后,按ctrl鼠标悬浮在上,看是否可以跳转,如果可以跳转,说明路径没错。
3、终于把所有路径问题处理了,然后log4j2又开始罢工了,网上大部分log4j2的介绍上都是说配置文件怎么弄,web.xml怎么弄,但忽略了一点,就是log4j2在servlet2.3上运行会有点问题,但maven自动构建出来的web项目就是servlet2.3的...于是更换web.xml文件为3,0,之所以要换3.0,就是因为在3.0上log4j2已经不用再web.xml上进行配置了,否则在servlet2.5上还要配监听器和过滤器,具体配置请baidu吧,多的是。
4、log4j2弄好了,然后启动,这回倒是不报错了,Java Resource上却莫名多了个x,但其中却没有任何报错的内容,查看Problem界面,提示Project Facets版本问题,于是乎右键点开项目——Properties——Project Facts,由于将web.xml换成了3.0,这里也需要对Dynamic Web Module的版本做下更改,现在还是2.3的状态,点击之后,修改——神马?改不了?
Cannot change version of project facet Dynamic Web Module to 3.0
继续上网查询,原来这个要改配置文件org.eclipse.wst.common.project.facet.core.xml 在eclipse workspace 项目下的.setting文件夹中
以上两行改动即可,改动完有时候会发现eclipse还没有更新,重启一下或者使用Maven-Update Project就好了。但如果是使用后者,你会发现,update之后,这些项又变回去了。还需在pom.xml文件中加上maven的插件。
mints
org.apache.maven.plugins
maven-compiler-plugin
3.1
1.8
5、启动Tomcat之后,服务器是启动了,但竟然没有加载项目,项目部署进去了点击各种按钮也发布不上去,根本没有反应。这下头彻底大了,只能再次baidu,但发现答案都没有什么用。重启、重装tomcat都没有解决。于是还是把问题定位在项目上,查看刚刚改动的地方。惊奇的发现,Project Facts中的Dynamic Web Module竟然自动变成了3.1,。重新改回3.0之后,Update Project,又变成3.1了。确定肯定是跟刚才加入的插件有关,但插件的版本调了几个之后都发现无效。最后只能将web.xml中servlet的版本也调成3.1,这下项目终于能够正常加载上了。
以上5个大坑填了之后,至少项目跑起来了,也对自己有个记录,毕竟处理了很久,今后再遇到至少有点解决思路了