加载product.config遇Premature EOF错误:根因分析及非HTTPS替代方案
XML编译Premature EOF错误分析与解决方案
根本原因
- 使用HTTP协议的
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"时,元数据编译工具会发起HTTP请求获取W3C的XMLSchema-instance定义,但目前W3C对所有HTTP请求会强制跳转至HTTPS。 - 部分编译工具对HTTP跳转的处理存在缺陷,无法正确跟进跳转后的HTTPS请求,导致连接提前中断,触发
Premature EOF(文件流提前结束)错误。 - 另外你提供的
product.config存在XML语法错误:name="<name>"属性的引号未闭合(原代码为name="<name> id="id"),虽切换HTTPS后问题解决,但该语法错误可能在HTTP场景下加重了工具解析异常,也需修正。
无需修改HTTP协议的解决办法
1. 配置本地Schema缓存
- 提前下载XMLSchema-instance对应的Schema文件到本地存储。
- 在编译工具的配置中添加Schema映射规则,将
http://www.w3.org/2001/XMLSchema-instance指向本地文件路径,让工具直接读取本地文件,避免发起远程HTTP请求。
2. 开启工具的HTTP跳转支持
- 若使用开源编译工具,查阅官方文档,找到支持HTTP跳转的配置项并开启,让工具能正确跟随W3C的跳转请求。
- 若为商用工具,联系厂商获取修复补丁或更新至最新版本,解决HTTP跳转处理的缺陷。
3. 修正XML语法错误
- 先修复
product.config中的引号未闭合问题,正确代码如下:
<product xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="<URLpath for .xsd file>" name="<name>" id="id"> <description> hi this is sample discription </description> </product>
- 语法错误可能与HTTP请求问题叠加导致异常,修正后可消除部分潜在触发因素。
内容的提问来源于stack exchange,提问作者newbee
相关产品推荐
相关产品推荐

