如果这是一个重复的问题,我深表歉意——我查找了相当多的文件,发现了很多类似的问题,但与此完全不同。
我正在尝试使用 wsimport 为具有在此 URL 指定的 WSDL 的 Web 服务生成 Java 客户端绑定:https ://api.dss.gov.au/datacollection/dex?wsdl但是,我不断收到如下错误:
[错误] 文件过早结束。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的第 1 行%2FSchema%2FAssessment.External.xsd
[错误] org.xml.sax.SAXParseException; systemId: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 行
尝试下载/解析 WSDL 中列出的第一个模式文件时失败。
我在 Windows 10 上运行它。我尝试过 JDK 1.8 和 Java 9。我尝试使用 Eclipse Web 开发人员工具、使用 jaxws-maven-plugin 和直接使用 wsimport 生成它——它们都失败了同样的错误。因此,大概该错误与核心 jax-ws 实现有关,而不与任何包装器有关。
我已将架构 URL 插入我的浏览器窗口(与我的开发人员在同一台机器上)并验证它是否正确下载。乍一看,它似乎是一个格式良好的模式文件——它肯定不是零长度,正如这个错误所暗示的那样。
考虑到这可能是一个权限问题,我尝试了这个问题中建议的修复:JDK8 的 WebService Client Generation Error不幸的是,它们也不起作用。
我尝试将 WSDL 和有问题的模式文件下载到我的本地目录,然后更新 WSDL 中的模式链接以指向模式文件的本地副本。这似乎确实解决了问题 - 但是,它在下一个模式文件上失败。我开始手动在本地下载模式文件并更新链接,但似乎有几十个模式文件。如果 API 发生变化,这似乎也不是针对此 Web 服务进行开发的可持续方式。
对此的答案可能包括以下任何一项:
- 告诉我我做错了什么导致这个错误,并允许我修复它以自动从这个 WSDL 生成 Java 绑定。
- wsimport 的免费替代工具,可实现相同的功能。
- 对 wsimport 的错误报告的引用表明这是一个尚未解决的已知问题。