org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException异常解决方法

本文详细记录了解决在单独运行Tomcat时遇到的Spring加载Bean失败的问题,通过调整配置文件中bean的属性和xsd解析文件的版本号,成功解决了org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException异常。

今天单独运行Tomcat时,一直报下面的错:

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 13 in XML document from class path resource [applicationContext-shiro.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: 13; columnNumber: 63; cvc-elt.1: 找不到元素 ‘beans’ 的声明。

在这里插入图片描述

java.lang.IllegalStateException: BeanFactory not initialized or already closed - call ‘refresh’ before accessing beans via the ApplicationContext

在这里插入图片描述

过程:

试过很多网上的解决方法都不行,Spring就是加载不了bean,磨了很久还是不能解决,本来准备放弃了,偶然看到Spring bean的一个属性default-lazy-init=“true”,和关于xsd解析文件版本号,把本来是4.0的版本号改成3.0项目就能正常启动了。

解决方法:

1.在配置xsd解析文件bean上加属性default-lazy-init=“true”

在这里插入图片描述

2.还有一种可能就是xsd解析文件版本号有问题,无法获取xsd文件,你可以从网上下xsd文件jar包到本地lib,或是修改版本号,这里我把4.0版本号改成3.0即可解决问题。
在这里插入图片描述

目前公微信 PC撤回补丁主要集中在 2.x 系列版本,例如 2.6.6.28、2.6.7.32、2.6.7.40、2.6.7.57、2.6.8.37、2.6.8.51 和 2.6.8.52 等版本[^1]。然而,针对 **4.1.0.14** 版本的微信 PC 客户,目前尚未有公的、广泛验证有效的撤回补丁方案。 ### 撤回补丁的实现原理 微信撤回的核心机制是修改客户接收到撤回指令时的响应逻辑。具体来说,当服务器发送撤回指令时,客户会执行一条 `je`(Jump if Equal)指令来判断是否执行撤回操作。通过反汇编工具(如 x64dbg、Ollydbg 等)将该指令修改为 `jmp`(无条件跳转),从而跳过撤回流程,使用户仍然可以看到已撤回消息[^3]。 ### 当前支持的版本分析 目前较为流行的补丁工具包括: - **辉鸭蛋制作的 RevokeMsgPatcher**,支持个版本的微信 PC 客户,但尚未适配 4.1.0.14 版本[^2]。 - **自制补丁方案**,如使用 x32dbg 或 x64dbg 修改 `WeChatWin.dll` 文件中的关键跳转指令,但这些方法需要用户具备一定的逆向工程能力,并且不同版本的微信可能需要不同的偏移地址和指令修改点[^5]。 ### 针对 4.1.0.14 的适配建议 由于 4.1.0.14 是较新的版本,官方可能对客户代码进行了优化或混淆,增加了逆向分析的难度。建议采取以下措施: 1. **查找社区更新**:持续关注源项目如 [RevokeMsgPatcher](https://github.com/huiyadanli/RevokeMsgPatcher),查看是否有人适配了该版本。 2. **自行逆向分析**: - 使用 x64dbg 或 x32dbg 加载 `WeChatWin.dll`。 - 搜索关键词 `revoke` 或 `revokemsg`。 - 找到对应的 `je` 指令并尝试修改为 `jmp`。 - 替换本地 `WeChatWin.dll` 文件并测试效果。 ### 示例代码:DLL 替换脚本(仅供参考) 以下是一个简单的批处理脚本示例,用于替换微信的 `WeChatWin.dll` 文件: ```batch @echo off set WECHAT_PATH="C:\Program Files (x86)\Tencent\WeChat" echo 正在备份原始 WeChatWin.dll... copy %WECHAT_PATH%\WeChatWin.dll %WECHAT_PATH%\WeChatWin.dll.bak echo 正在替换为撤回版本... copy WeChatWin.dll %WECHAT_PATH% echo 替换完成,请重启微信。 ``` 请确保在执行前将修改后的 `WeChatWin.dll` 放置在同一目录下。 ---
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值