struts2.3.34升级至struts2.5.20记录

本人工作没多久,也算小白一枚,日常会维护几个公司的老项目,本次是领导让把老项目struts2升级,避免漏洞破坏.

由于之前没有做过jar包升级操作,所以还是蛮棘手的,碰到了挺多问题,在此记录一下,如果大家遇到同样问题,可以参考一下.

环境:jdk 1.8 , tomcat 8.5

maven坐标配置

<properties>
    <struts.version>2.5.20</struts.version>
	<spring.version>4.1.3.RELEASE</spring.version>
	<slf4j.version>1.6.4</slf4j.version>
</properties>
<!-- struts2    start-->
		<!-- 零配置 开启注解模式-->
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-convention-plugin</artifactId>
			<version>${struts.version}</version>
		</dependency>
		<!--引入Struts对JSON的支持-->
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-json-plugin</artifactId>
			<version>${struts.version}</version>
		</dependency>
		<!--整合spring-->
		<dependency>
			<groupId>org.apache.struts</groupId>
			<artifactId>struts2-spring-plugin</artifactId>
			<version>${struts.version}</version>
		</dependency>
	<!-- struts2   end-->

web.xml中的过滤器改一下,改成以下这样,原来好像多了俩字母,忘记是什么了,你对比一下吧

然后启动tomcat,启动报错:

java.lang.NoSuchMethodError: org.springframework.aop.scope.ScopedProxyUtils.isScopedTarget(Ljava/lang/String;)Z

这个是因为spring-aop版本低

所以我把aop版本升级了一下

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-aop</artifactId>
	<version>4.3.20.RELEASE</version>
</dependency>

问题解决,继续运行,抛异常:

java.lang.IncompatibleClassChangeError: class org.apache.struts2.convention.DefaultClassFinder$InfoBuildingVisitor has interface org.objectweb.asm.ClassVisitor as super class

这个错误当时就是搞得我生活不能自理了,就是可能太依赖百度了,然后百度找了一天,倒是找到相同的错误,但是解决办法不是很具体,然后就挺难受的,最后找到了一个帖子类似的错误,照着改了一遍才解决的.

这个错误其实就是jar包冲突了,你项目中有两个asm.jar,不同的jar把它们依赖进来,版本不同,struts2选用了低版本的,但是低版本的这个jar中你要用的这个类是个接口,高版本里面是个类,所以你这样你先搜索这个类发现有三个

然后你查看一下自己的依赖

然后就右键点击这个低版本的

ok

就完事了,是不是想想感觉还挺简单的

然后再启动

这次是启动控制台并没有抛异常,但是登陆项目之后抛出异常:

java.lang.NoSuchMethodError: org.apache.commons.lang3.reflect.MethodUtils.getMethodsListWithAnnotation(Ljava/lang/Class;Ljava/lang/Class;ZZ)Ljava/util/List;

这个就需要升级commons-lang3的jar

<dependency>
    <groupId>org.apache.commons</groupId>
	<artifactId>commons-lang3</artifactId>
	<version>3.7</version>
</dependency>

然后这次启动就ok了.

升级完毕,单证是第一次升级这种东西总结一下就是解决问题的时候,百度依赖还是要依赖的,但是自己也要动脑子,自己翻译异常信息,分析异常信息,不能说全靠百度,百度不到解决办法就蒙圈,哈哈,就是这样

猜你喜欢

转载自blog.csdn.net/qq979171616/article/details/86623521