使用Xerces库校验XSD 1.1报错及Maven依赖配置咨询
Xerces XSD 1.1 支持及依赖配置说明
基础支持结论
Apache Xerces 自2.11.0版本起已正式支持XSD 1.1规范校验,引入依赖后抛出SchemaFactory加载失败的问题,不是Xerces本身不支持XSD 1.1,是依赖引入坐标错误导致的。
问题根因
最初引入的xerces:xercesImpl是Maven仓库中早期遗留的非官方维护包,存在两个核心问题:
- 包内未注册XSD 1.1对应的SchemaFactory服务实现,JVM无法通过标准SPI机制找到对应实现类
- 未配置XSD 1.1运行所需的第三方依赖声明,缺少运行必需的类文件
手动加入classpath的四个jar包均为XSD 1.1校验的必需运行组件,分别对应:
cupv10k-runtime.jar:XSD 1.1断言语法解析依赖的CUP语法分析器运行时org.eclipse.wst.xml.xpath2.processor_1.1.0.jar:XSD 1.1规则依赖的XPath 2.0表达式计算引擎xercesImpl.jar:Xerces核心实现包xml-apis.jar:XML处理标准API包
这些依赖不需要手动下载导入,Apache官方维护的Xerces包已经配置了完整的传递依赖规则,直接引入官方Maven坐标即可自动拉取所有必需组件。
正确依赖配置
将pom中原有xerces依赖替换为Apache官方维护的坐标:
<dependency> <groupId>org.apache.xerces</groupId> <artifactId>xercesImpl</artifactId> <version>2.12.2</version> </dependency>
依赖引入完成后,原有SchemaFactory.newInstance("http://www.w3.org/XML/XMLSchema/v1.1")代码可直接正常运行,不会再抛出SchemaFactory加载失败的异常。
若项目存在其他组件引入的低版本xml-apis、或者JDK内置XML API的版本冲突,可根据实际运行报错调整依赖排除规则,常规Spring、普通JavaSE项目不需要额外配置。
内容的提问来源于stack exchange,提问作者NAVOZ
相关产品推荐
相关产品推荐

