You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

执行Spring Batch出现SAXParseException无法读取xsd报错如何永久解决

报错触发原因

这个SAXParseException警告是Spring加载XML配置文件时,XSD Schema校验资源拉取失败导致的,具体触发逻辑如下:

  • Spring默认会优先从线上官方地址拉取对应XSD文件做配置校验,当网络环境存在防火墙限制、波动、或者官方地址临时不可达时,就会抛出该拉取失败警告。
  • 重试后程序可以正常执行,是因为Spring内置了降级逻辑:线上拉取XSD失败后,会自动从本地引入的spring-beans等相关Jar包中读取对应版本的内置XSD文件完成校验,所以不会影响最终启动。
  • 少部分场景是XML配置中写的XSD版本号和本地引入的Spring依赖版本不匹配,导致版本对应不上拉取失败,这种场景通常会直接启动失败,不会重试成功。

永久修复方案

方案1:将XSD引用改为本地Classpath路径(最推荐)

直接指定从本地Jar包读取XSD,完全跳过网络拉取步骤,从根源避免网络问题导致的警告。
修改XML配置的schemaLocation属性即可,示例如下:
原配置:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

修改后:

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans classpath:org/springframework/beans/factory/xml/spring-beans.xsd">

你项目中用到的其他Spring模块XSD(比如batch、context、tx等)都可以按照该规则修改,路径对应对应Spring模块Jar包中的XSD文件路径即可。

方案2:对齐Spring依赖版本和XSD版本

如果你不想改引用路径,确保XML配置中XSD的版本和本地引入的Spring核心依赖版本完全一致,不要出现依赖用5.3.x版本,XSD写4.2.x版本的情况,直接写不带版本号的XSD地址即可,Spring会自动匹配当前依赖对应的版本。

方案3:关闭XML配置校验(不推荐)

如果不需要XML配置校验能力,可以直接关闭校验彻底去掉该警告,代码配置示例:

XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(beanFactory);
reader.setValidationMode(XmlBeanDefinitionReader.VALIDATION_NONE);

也可以在XML头部添加validation-mode="NONE"属性实现关闭。

内容的提问来源于stack exchange,提问作者One Developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 12:27:02