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

标签 java apache web-services soap apache-axis

今天,我在使用 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 上有很多关于这个问题的答案,但没有一个真正为我解决了这个问题,所以我想我会分享解决我的问题的方法(以及其他建议的解决方案的摘要),希望将来能解决这个问题帖子会对某人有所帮助。

如果有人想将自己的知识添加到这篇文章中,请继续留下评论/答案。

最佳答案

<强>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 后,仅生成一个开发客户端可以工作。操作方法如下:

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

enter image description here

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

    enter image description here

  • 单击“完成”,您应该会在 src 文件夹下看到生成的 Web 服务客户端。

  • 关于java - Axis2 Soap WS 客户端 : java. lang.NoClassDefFoundError: org/apache/ws/commons/schema/XmlSchema,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47201493/

    相关文章:

    java - Spring WebService无效的NamespaceHandler问题(JAXWS)

    PHP 在错误时发出 500 - 这记录在哪里?

    node.js - 网络代理阻止socket.io

    apache - htaccess 将 RewriteBase 设置为请求 URI 的开头

    php - NuSoap soapClient 调用出现 "Premature end of data in tag html"错误

    c# - 如何在 WCF 中接受 BinarySecurityToken?

    java - Selenium webdriver 线程 sleep 未按预期工作

    java - 组织.jdom.input.JDOMParseException : Content is not allowed in trailing section

    java - 从两个 SSLSockets(客户端)获取多个流

    c++ - 简单的软件许可证 key 服务器建议?