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

时间:2017-11-09 12:09:12

标签: java apache web-services soap axis2

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

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

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

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

    Error

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

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

2 个答案:

答案 0 :(得分: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。将动态Web模块项目方面还原为版本2.3

这实际上是我的伎俩。该项目使用的是动态Web模块2.5方面,而且这个Axis版本似乎无法正常工作(我知道3.0有问题)。切换到2.3后只生成一个开发客户端。这是如何做到的:

  1. 右键点击该项目 - &gt; “属性” - &gt; “Project Facets”
  2. 选择“动态网络模块”的版本并从右下拉菜单中将其设置为2.3(如果此窗口为空,则可能需要通过单击同一窗口中提供的链接以多面形式转换项目。)
  3. 右键单击您的WSDL - &gt; “网络服务” - &gt; “生成客户”
  4. enter image description here

    1. 通过向下拖动左侧的仪表设置“仅限开发客户端”选项,设置服务器运行时并选择Axis2作为Web服务运行时。

      enter image description here

    2. 点击“完成”,您会看到在src文件夹下生成的Web服务客户端。

答案 1 :(得分:0)

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