今天,我在使用 Apache Axis 2 1.7.4 和 Eclipse Neon 4.6.3RC3 生成 SOAP Web 服务客户端时遇到了问题。
我生成 Web 服务客户端的方式是:
- 右键单击我的 WSDL >“Web 服务”>“生成客户端”
- 选择“Apache Axis2”作为 Web 服务运行时,选择“Tomcat 7”作为服务器运行时(所有其他选项均为默认值)
- 点击“完成”
我得到的错误是:
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。将动态 Web 模块项目方面恢复到版本 2.3
这才是真正对我有用的东西。该项目使用的是 Dynamic Web Module 2.5 方面,但似乎无法在该 Axis 版本中正常工作(我知道 3.0 有问题)。切换到 2.3 后,仅生成一个开发客户端可以工作。操作方法如下:
- 右键单击项目 ->“属性”->“项目方面”
- 选择“动态 Web 模块”的版本,然后从右侧下拉列表中将其设置为 2.3(如果此窗口为空,您可能需要通过单击同一窗口中提供的链接以分面形式转换项目)。<
- 右键单击您的 WSDL ->“Web 服务”->“生成客户端”
关于java - Axis2 Soap WS 客户端 : java. lang.NoClassDefFoundError: org/apache/ws/commons/schema/XmlSchema,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47201493/