Axis2 Soap WS client: java.lang.NoClassDefFoundError: org/apache/ws/commons/schema/XmlSchema

Axis2 Soap WS client: java.lang.NoClassDefFoundError: org/apache/ws/commons/schema/XmlSchema

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

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

  1. 右键单击我的 WSDL > "Web Services" > "Generate client"
  2. Select "Apache Axis2" 作为 Web 服务运行时和 "Tomcat 7" 作为服务器运行时(所有其他选项都是默认值)
  3. 点击"Finish"

我得到的错误是:

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

虽然 Whosebug 上有很多关于这个问题的答案,none 确实为我解决了这个问题,所以我想我会分享解决我的问题的方法(以及其他建议解决方案的摘要)希望将来这个 post 能对某人有所帮助。

如果有人想将他的知识添加到此 post,请继续并留下一个 comment/answer。

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>

来源:

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

重要说明:由于某些原因,似乎即使您添加了新的库,您也需要重新启动 Eclipse 才能使用新的库。

2。使用 Axis2 1.6.x

由于这似乎是 Axis2 1.7.x 中引入的错误,另一种可能的解决方案是尽可能使用 1.6.x jar。

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

这才是真正对我有用的东西。该项目使用的是 Dynamic Web Module 2.5 facet,它似乎不能与这个 Axis 版本一起正常工作(我知道 3.0 有问题)。切换到 2.3 后,只生成一个开发客户端。方法如下:

  1. 右键单击项目 -> "Properties" -> "Project Facets"
  2. Select 版本 "Dynamic Web Module" 并从右侧下拉列表中将其设置为 2.3(如果此 window 为空,您可能需要通过单击link 同 window).
  3. 中提供
  4. 右键单击您的 WSDL -> "Web Services" -> "Generate client"

  1. 通过向下拖动左侧的指示器来设置 Develop client only 选项,设置您的服务器运行时并选择 Axis2 作为您的 Web 服务运行时。

  2. 单击 "Finish",您应该会在 src 文件夹下看到生成的 Web 服务客户端。

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