Strut2框架从3.2.16.3升级到3.2.32遇到的问题

今天将公司Web项目(JSRM)从的Struts框架从2.3.16.3版本升级到2.3.32版本,因为2.3.16版本出现了高危漏洞,项目是maven项目,所以升级方法是将项目用到的struts相关包全部升级到2.3.32版本中的包(主要包如struts-core, xwork-core,struts2-spring-plugin,struts2-json-plugin等等版本升高了,部分包的版本没变,由于是maven项目,因此只要修改jar包的版本就会自动从中央仓库下载高版本jar包)。但是,升级后项目跑不起来,只好从控制台的错误着手一步一步跟踪问题,中间遇到了很多各种各样的报错以及问题,最终解决了报错,总结起来是以下三个方面的问题:
第一:框架升级后编译报错。这种问题都是因为缺少jar包 。JSRM项目中旧的2.3.16.3版本中在pom.xml中配了struts2-core.jar包,会自动把改包依赖的xwork-core.jar等5个依赖包自动下载并加入构件路径,升级到2.3.32版本后只会下载xwork-core.jar包,其他包需要手动在pom.xml中添加,加完后代码编译就不报错了。(可参考: http://blog.csdn.net/w1014074794/article/details/51892619
第二:编译不报错但启动系统报错。经排查,这个问题极是版本升级导致struts的配置需要修改导致。
如下是升级后需要在struts.xml中配置的三个配置项:



在升级之前,第三个没配置,使用的默认值,但是低版本的默认值是true,高版本默认值为false,所以升级后必须显示配置。(参考:http://blog.csdn.net/achilles12345/article/details/37697457
第一个配置在升级之前不需配置,但是升级后启动系统报com.opensymphony.xwork2.util.finder.ClassFinder - Unable to read class错误,加入这一行配置就行了。(参考:http://blog.csdn.net/aquila_bj/article/details/27200905

第三:编译不报错但启动系统报错。JSRM项目有trunk版本和1.0版本,trunk是用来迭代开发的,1.0是用来上线使用的,通过排查上面第一,第二个问题解决了trunk版本的升级。于是对1.0版本应用trunk版本的升级处理,启动1.0结果报错。经排查,前面有个同事打包遇到问题,于是把所有jar包丢到lib目录下并加入了构件路径下后打包,问题就在于此,他放的是未升级的旧版本的jar包,而我升级后在pom.xml中配置 了新版本的jar包,导致jar包冲突,系统编译了旧的包,而其他某些包的版本升上来了,从而执行报错。最终解决办法是将构件路径上的这些包删除,试一下还是不行,必须的彻底从lib目录删除这些jar包才没有把旧的包加入构件路径。
至此,两个版本(主干trunk和分支1.0)的struts框架升级完美解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值