wsimport 无法解析 WSDL(模式文件上的文件过早结束)
wsimport failing to parse WSDL (Premature end of file on a schema file)
如果这是一个重复的问题,我深表歉意 - 我查找了很多文件并发现了很多类似的问题,但没有一个与此完全相同。
我正在尝试使用 wsimport 为 Web 服务生成 Java 客户端绑定,其中指定的 WSDL URL: https://api.dss.gov.au/datacollection/dex?wsdl 但是,我不断收到这样的错误:
的第 1 行
[错误] org.xml.sax.SAXParseException;系统编号:http://api.dss.gov.au/datacollection/dex?WSDL&type=XSD&file=file%3A%2FC%3A%2Ftfs%2FCCSApps%2FDataCollection%2FBranches%2FMR17.11%2FOSB%2FDataCollection.Assessment%2FResources%2FSchema%2FAssessment.External.xsd;行号:1;列数:1;文件过早结束。
https://api.dss.gov.au/datacollection/dex?wsdl
的第 2 行
尝试download/parse WSDL 中列出的第一个模式文件时失败。
我在 Windows 上 运行 10。我尝试了 JDK 1.8 和 Java 9。我尝试使用 Eclipse Web 开发人员工具生成它,并通过使用 jaxws-maven-plugin,并通过直接使用 wsimport - 它们都因相同的错误而失败。所以大概错误与核心 jax-ws 实现有关,而不是与任何包装器有关。
我已将架构 URL 插入我的浏览器 window(与我的开发人员在同一台机器上)并验证它是否正确下载。乍一看,它似乎是一个格式正确的模式文件——它肯定不是零长度的,正如这个错误所暗示的那样。
考虑到这可能是一个权限问题,我尝试了这个问题中建议的修复:WebService Client Generation Error with JDK8不幸的是,它们也没有用。
我尝试将 WSDL 和有问题的模式文件下载到我的本地目录,然后更新 WSDL 中的模式 link 以指向模式文件的本地副本。这似乎确实解决了这个问题——但是,它在下一个模式文件上失败了。我开始了一个手动过程,将架构文件全部下载到本地并更新 links,但似乎有几十个架构文件。如果 API 发生变化,它似乎也不是针对此 Web 服务进行开发的可持续方式。
此问题的答案可能包括以下任何一项:
- 告诉我我做错了什么导致这个错误,并允许我修复它以自动从这个 WSDL 生成 Java 绑定。
- wsimport 的免费替代工具,可实现相同的功能。
- 对 wsimport 错误报告的引用显示这是一个尚未解决的已知问题..
我必须对 xml declaration.Download WSDL 提出问题并尝试使用任何 IDE 生成客户端。即 Eclipse。
我在 XML 编辑器中打开了错误的 XSD 文件,它显示 The reference to entity "type" must end with the ';' delimiter.
。 &
符号不会在架构导入中转义,并且跨所有其他架构导入。 &type=XSD&file=file
这取决于 WSDL 作者在 XSD 文件中的导入中转义和号或删除可选的 type
和 file
实体,它可以解决问题。
如果这是一个重复的问题,我深表歉意 - 我查找了很多文件并发现了很多类似的问题,但没有一个与此完全相同。
我正在尝试使用 wsimport 为 Web 服务生成 Java 客户端绑定,其中指定的 WSDL URL: https://api.dss.gov.au/datacollection/dex?wsdl 但是,我不断收到这样的错误:
的第 1 行[错误] org.xml.sax.SAXParseException;系统编号:http://api.dss.gov.au/datacollection/dex?WSDL&type=XSD&file=file%3A%2FC%3A%2Ftfs%2FCCSApps%2FDataCollection%2FBranches%2FMR17.11%2FOSB%2FDataCollection.Assessment%2FResources%2FSchema%2FAssessment.External.xsd;行号:1;列数:1;文件过早结束。 https://api.dss.gov.au/datacollection/dex?wsdl
的第 2 行尝试download/parse WSDL 中列出的第一个模式文件时失败。
我在 Windows 上 运行 10。我尝试了 JDK 1.8 和 Java 9。我尝试使用 Eclipse Web 开发人员工具生成它,并通过使用 jaxws-maven-plugin,并通过直接使用 wsimport - 它们都因相同的错误而失败。所以大概错误与核心 jax-ws 实现有关,而不是与任何包装器有关。
我已将架构 URL 插入我的浏览器 window(与我的开发人员在同一台机器上)并验证它是否正确下载。乍一看,它似乎是一个格式正确的模式文件——它肯定不是零长度的,正如这个错误所暗示的那样。
考虑到这可能是一个权限问题,我尝试了这个问题中建议的修复:WebService Client Generation Error with JDK8不幸的是,它们也没有用。
我尝试将 WSDL 和有问题的模式文件下载到我的本地目录,然后更新 WSDL 中的模式 link 以指向模式文件的本地副本。这似乎确实解决了这个问题——但是,它在下一个模式文件上失败了。我开始了一个手动过程,将架构文件全部下载到本地并更新 links,但似乎有几十个架构文件。如果 API 发生变化,它似乎也不是针对此 Web 服务进行开发的可持续方式。
此问题的答案可能包括以下任何一项:
- 告诉我我做错了什么导致这个错误,并允许我修复它以自动从这个 WSDL 生成 Java 绑定。
- wsimport 的免费替代工具,可实现相同的功能。
- 对 wsimport 错误报告的引用显示这是一个尚未解决的已知问题..
我必须对 xml declaration.Download WSDL 提出问题并尝试使用任何 IDE 生成客户端。即 Eclipse。
我在 XML 编辑器中打开了错误的 XSD 文件,它显示 The reference to entity "type" must end with the ';' delimiter.
。 &
符号不会在架构导入中转义,并且跨所有其他架构导入。 &type=XSD&file=file
这取决于 WSDL 作者在 XSD 文件中的导入中转义和号或删除可选的 type
和 file
实体,它可以解决问题。