今天我在使用Apache Axis 2 1.7.4和Eclipse Neon 4.6.3RC3生成SOAP Web服务客户端时遇到了问题。
我生成Web服务客户端的方式是:
我得到的错误是:
java.lang.NoClassDefFoundError: org/apache/ws/commons/schema/XmlSchema
尽管StackOverflow上有很多关于这个问题的答案,但是没有人能真正为我解决这个问题,所以我想我会分享解决了我的问题的原因(以及其他提议的解决方案的摘要)希望将来这篇文章会有所帮助有人。
如果有人想将他的知识添加到这篇文章中,请继续发表评论/回答。
1.添加缺少的XML模式依赖项
在许多情况下,这似乎与缺少对项目的依赖性有关。缺少的依赖似乎是xmlschema-core-2.2.1.jar
。您可以在Maven项目中添加它,如下所示:
<dependency>
<groupId>org.apache.ws.xmlschema</groupId>
<artifactId>xmlschema-core</artifactId>
<version>2.2.1</version>
</dependency>
资料来源:https://stackoverflow.com/a/36497872/4921205
如果您不使用Maven,可以下载库并手动将它们添加到类路径中。
重要说明:由于某些原因,即使添加新库,您仍需要在选择新库之前重新启动Eclipse。
2.使用Axis2 1.6.x.
由于这似乎是Axis2 1.7.x
中引入的一个错误,另一种可能的解决方案可能是使用1.6.x
jar,如果可能的话。
3.将Dynamic Web Module项目方面恢复为2.3版
这实际上是我的诀窍。该项目使用的是动态Web模块2.5方面,而且这个Axis版本似乎无法正常工作(我知道3.0有问题)。切换到2.3后只生成一个开发客户端。这是怎么做的:
手动将xmlschema-core-2.2.1.jar从$ AXIS2_HOME / lib复制到Eclipse项目目录WebContent / WEB-INF / lib,关闭并重新打开eclipse,然后再生成Web服务客户端。