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

Axis2 Soap WS客户端:java.lang.NoClassDefFoundError:org/apache/WS/commons/schema/XmlSchema,java,apache,web-services,soap,axis2,Java,Apache,Web Services,Soap,Axis2,我今天在使用ApacheAxis2 1.7.4和EclipseNeon 4.6.3RC3生成SOAP Web服务客户端时遇到了一个问题 我生成Web服务客户端的方式是: 右键单击我的WSDL>“Web服务”>“生成客户端” 选择“ApacheAxis2”作为Web服务运行时,选择“Tomcat7”作为服务器运行时(所有其他选项都是默认值) 点击“完成” 我得到的错误是: java.lang.NoClassDefFoundError: org/apache/ws/commons/schema/Xm

我今天在使用ApacheAxis2 1.7.4和EclipseNeon 4.6.3RC3生成SOAP Web服务客户端时遇到了一个问题

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

  • 右键单击我的WSDL>“Web服务”>“生成客户端”
  • 选择“ApacheAxis2”作为Web服务运行时,选择“Tomcat7”作为服务器运行时(所有其他选项都是默认值)
  • 点击“完成”
  • 我得到的错误是:

    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>
    
    
    org.apache.ws.xmlschema
    

    如果您没有使用Maven,可以下载这些库并手动将它们添加到类路径中

    重要注意事项:出于某些原因,即使添加了新库,也需要在获取新库之前重新启动Eclipse

    2。使用Axis2 1.6.x

    由于这似乎是在
    Axis2 1.7.x
    中引入的一个bug,如果可能的话,另一个可能的解决方案可能是使用
    1.6.x
    jar

    3。将动态Web模块项目方面恢复为2.3版

    这才是我真正的秘诀。该项目使用的是DynamicWebModule2.5方面,而这似乎不能与Axis版本一起正常工作(我知道3.0有问题)。切换到2.3后,只生成一个开发客户机。以下是如何做到这一点:

  • 右键单击项目->“属性”->“项目方面”
  • 选择“Dynamic Web Module”的版本,并从右侧下拉列表中将其设置为2.3(如果此窗口为空,则您可能需要通过单击同一窗口中提供的链接以刻面形式转换项目)
  • 右键单击WSDL->“Web服务”->“生成客户端”
  • 通过拖动左侧的仪表来设置“仅开发客户端”选项,设置服务器运行时并选择Axis2作为Web服务运行时

  • 单击“Finish”,您将看到在
    src
    文件夹下生成的Web服务客户端


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