【踩坑】org.xml.sax.SAXParseException; lineNumber: 14; columnNumber: 33; schema_reference.4: 无法读取方案文档

问题:

bash org.xml.sax.SAXParseException; lineNumber: 14; columnNumber: 33; schema_reference.4: 无法读取方案文档 'https:www.springframework.orgschemacontextspring-context.xsd', 原因为 1) 无法找到文档; 2) 无法读取文档; 3) 文档的根元素不是 <xsd:schema>

最常见的导致这一问题的原因其实与使用了一个名为“assembly ”的 maven 打包插件有关。很多项目需要将工程连同其所依赖的所有 jar 包打包成一个 jar 包,maven 的 assembly 插件就是用来完成这个任务的。但是由于工程往往依赖很多的 jar 包,而被依赖的 jar 又会依赖其他的 jar 包,这样,当工程中依赖到不同的版本的 spring 时,在使用 assembly 进行打包时,只能将某一个版本 jar 包下的 spring.schemas 文件放入最终打出的 jar 包里,这就有可能遗漏了一些版本的 xsd 的本地映射,进而出现了文章开始提到的错误。如果你的项目是打成单一 jar 的,你可以通过检查最终生成的 jar 里的 spring.schemas 文件来确认是不是这种情况。而关于这种情况,解决的方法一般是推荐使用另外一种打包插件 shade

关于Spring中加载xsd文件出现故障的文章总结_wujiang88的博客-CSDN博客

回到我这次遇到的问题。因为我们使用的Spring系列依赖包:spring-beans、spring-context、spring-aop、spring-jdbc、spring-tx等其中有部分配置文件是同名的:spring.facotries、spring.handlers、spring.schemas、spring.tooling。

在进行打包的过程中,打包插件如果没有进行详细配置(我这里用的 maven-assembly-plugin),这些同名的配置文件就会放在同一个目录下,同名的文件可能会被替换,最后就会形成配置文件不全的情况。

在这里插入图片描述

将所有的配置文件中的配置信息进行手动合并。然后将项目jar包目录\META-INF下的这4个文件用合并好的文件替换掉,就能运行了。

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值