Axis2 Soap WS客户端:java.lang.NoClassDefFoundError:org / apache / ws / commons / schema / XmlSchema

问题描述 投票:0回答:2

今天我在使用Apache Axis 2 1.7.4和Eclipse Neon 4.6.3RC3生成SOAP Web服务客户端时遇到了问题。

我生成Web服务客户端的方式是:

  1. 右键单击我的WSDL>“Web服务”>“生成客户端”
  2. 选择“Apache Axis2”作为Web服务运行时,选择“Tomcat 7”作为服务器运行时(所有其他选项都是默认值)
  3. 点击“完成”

我得到的错误是:

java.lang.NoClassDefFoundError: org/apache/ws/commons/schema/XmlSchema

Error

尽管StackOverflow上有很多关于这个问题的答案,但是没有人能真正为我解决这个问题,所以我想我会分享解决了我的问题的原因(以及其他提议的解决方案的摘要)希望将来这篇文章会有所帮助有人。

如果有人想将他的知识添加到这篇文章中,请继续发表评论/回答。

java apache web-services soap axis2
2个回答
1
投票

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后只生成一个开发客户端。这是怎么做的:

  1. 右键单击项目 - >“属性” - >“项目构面”
  2. 选择“动态Web模块”的版本并从右下拉菜单中将其设置为2.3(如果此窗口为空,则可能必须通过单击同一窗口中提供的链接以多面形式转换项目)。
  3. 右键单击您的WSDL - >“Web服务” - >“生成客户端”

enter image description here

  1. 通过向下拖动左侧的仪表设置“仅限开发客户端”选项,设置服务器运行时并选择Axis2作为Web服务运行时。 enter image description here
  2. 单击“完成”,您将看到在src文件夹下生成的Web服务客户端。

0
投票

手动将xmlschema-core-2.2.1.jar从$ AXIS2_HOME / lib复制到Eclipse项目目录WebContent / WEB-INF / lib,关闭并重新打开eclipse,然后再生成Web服务客户端。

© www.soinside.com 2019 - 2024. All rights reserved.