struts2整合spring报错的坑

一开始没引入struts2-spring-plugin,导致怎么搞都无法通过spring生成实例,null了一天,头大。后来多方打听知道了struts2整合spring需要用到插件,struts2-spring-plugin是必不可少的。

参考文章:https://www.cnblogs.com/zqyanywn/p/7139865.html 对这个插件讲解的蛮到位

第一次引入这个包是通过直接加载Builderpath里,这是运行都是成功的,但是仍旧无法生成实例。试了几次仍旧是相同情况,因为对spring不了解就一直以为是spring配置出了问题,几次检查、包括拼写全都没有问题,而且通过junit单元测试是可以生成实例,也就是spring配置并没有问题。

 

 绝望之下想到会不会是包没引进去,换一种引包可不可以?于是,进行了第二次尝试,通过web-lib将struts2-spring-plugin包引入,这一次报错了!瞬间很开心。但是这个错很懵

 缺少log4j?明明就有包啊。而且为什么通过buildPath引入不报错而通过web libraries就会报错,这时候猜是第一种引入是压根没有调用,所以也就导致spring一直生成实例失败。百度一下,还真的是这样!

参考文章:https://s343174147.iteye.com/blog/1986307

对于java web项目来说,虽然eclipse的workspace中仍然有.classpath文件,但即使你导入的了自己定义的library,它也不会出现在.classpath中。因为对于java web项目,它最终不是通过本地的JRE去运行,而是部署到web 服务器,如Tomcat、Weblogic、WebSphere等,这些服务器都实现了自身的类加载器。以tomcat为例, web 应用都是部署到 webapps 目录下,而WebappClassLoader加载器专门负责加载 webapps 下所有web项目的 WEB-INF 下的类库和类文件。而我们通过 build path 引入的 jar 包自然不会被 WebappClassLoader 加载器加载,所以才会出现 ClassNotFoundException 。

!!这就是说spring自动生成实例的确是跟struts2-spring-plugin插件有关系,而且引入方式也有影响!那现在这个错是什么原因呢?肯定不是log4j缺包,但是错误提示很蒙圈。这个问题卡了很久很久,还去网上参考别人的代码。看了一大圈,看到了sturts2的版本和struts2-spring-plugin插件的版本!不匹配!!struts2我使用的是2.3.34,而插件 是2.5,spring使用的是3.0.5,会不会是这个原因?实在是想不出其他原因了,一搜还真的有。。

参考文章:https://yq.aliyun.com/ziliao/325133

虽然报的错不一样,但是有一句说的好:“ struts的spring插件版本比struts版本高也不行,struts版本要和struts的spring插件版本一致,否则抛出如下异常”。然后果断从maven仓库下载2.3.34版本的struts2-spring-plugin插件,运行后可以了!实例也生成了!!喜极而泣啊。卡了整整一天的问题

 注:这次在引包上出现了很多问题,手动引包麻烦还容易出错,下次可以考虑通过maven进行包管理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值