当前位置: 首页 > 知识库问答 >
问题:

JDK8:“java.lang.NoClassDefFoundError:javax/xml/ws/Service”

商业
2023-03-14

对于Web服务来说相当陌生,已经做了一些研究,并使用JAX-WS RI(wsimport工具)为第三方WSDL生成了客户端存根。正在使用 JDK 8。使用生成的存根,编写 Web 服务客户端以调用 WSDL 操作。Maven Build是成功的,但在测试它时,得到了“java.lang.NoClassDefFoundError: javax/xml/ws/Service”。

这是Web服务客户端。也尝试为NoClassDefFoundError引用了许多资源,但实际上没有任何效果。虽然调试理解其在下面第11行中的失败。如何修复此NoClassDefFoundError,请帮助?

line-11:  ServiceWS service = new ServiceWS(); //@WebServiceClient
line-12:  ServiceWSSoap stubWS = service.getServiceWSSoap(); //where ServiceWSSoap is @WebService and getServiceWSSoap() is @WebEndpoint 

这是堆栈跟踪

java.lang.NoClassDefFoundError: javax/xml/ws/Service
    at package1.ProjectClient.getStub(ProjectClient.java:11)
    at package.Project.<init>(Project.java:55)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.base/java.lang.Class.newInstance(Unknown Source)
    at package.SubClass.getInstance(SubClass.java:1284)
    at package.SubClass.getCall(SubClass.java:635)
    at package.SubClass.execute(SubClass.java:317)
    at package.MainClass.run(MainClass.java:1216)
    at package.MainClass.execute(MainClass.java:759)
    at package.ServerClass.b(ServerClass.java)
    at package.ServerClass.run(ServerClass.java)
    at java.base/java.lang.Thread.run(Unknown Source)

我在pom中包含了jaxws-api依赖关系。xml,但仍然没有运气

 <dependency>
        <groupId>javax.xml.ws</groupId>
        <artifactId>jaxws-api</artifactId>
        <version>2.3.1</version>
    </dependency>

研究链接:1)Java Web服务客户端(最佳方式)
2)https://mkyong.com/webservices/jax-ws/jax-ws-wsimport-tool-example/
3)https://mkyong.com/webservices/jax-ws/jax-ws-hello-world-example/

共有2个答案

叶煌
2023-03-14

感谢您的回复,沃洛·米哈尔。我也已经包含了jaxws-rt依赖性。但我仍然不断得到NoClassDefFoundError。

在将所需的jar从.m2文件夹手动添加到本地服务器路径后,此问题得到解决

霍书
2023-03-14

您只包含API类。您的项目还需要一些实现类(工件)。可能的实现之一是jaxws-ri:

<dependency>
  <groupId>com.sun.xml.ws</groupId>
  <artifactId>jaxws-ri</artifactId>
  <version>2.3.1</version>
</dependency>
 类似资料:
  • 我有一个非常简单的(现有的)web服务,我希望使用JDK8生成一个web服务客户机。 我使用的是纯JDK8工具链,这意味着我使用的是JDK8目录中的wsimport工具。 现在问题来了:JDK8中的wsimport工具生成的Java源代码不符合JDK8 Javadoc。正如您可能知道的那样,Javadoc工具在JDK8中变得更加严格。 请考虑以下简单模式: 为此,wsimport工具将生成Java

  • 我试图在NetBeans 12.2上安装JDK8作为一个平台,但我一直收到以下错误消息: “不行 有办法解决这个问题吗?还是有一个版本的JDK8不会产生这个错误消息? 进一步:我应该提到我在MACOS大苏尔。 以下是我在Terminal中使用java-version得到的结果: java版本“15.0.2”2021-01-19 java(TM)SE运行时环境(构建15.0.2 7-27)java热

  • 我需要访问JDK 11中的遗留SOAP网络服务。但是我正在遭受“找不到提供商” JDK11实现是:zulu11。2.3-jdk11。0.1-win_x64。 在我的build.gradle,我有以下依赖: 我看到: 以下https://github.com/javaee/metro-jax-ws/issues/1247我尝试设置: -贾瓦克斯。xml。ws。spi。Provider=com。太阳x

  • 问题内容: 是否有一种简单的方法(即:不使用代理)来访问对使用JAX-WS参考实现(JDK 1.5及更高版本中包含的参考发布)发布的Web服务的原始请求/响应XML的访问?我需要做的是通过代码做到这一点。仅通过巧妙的日志记录配置将其记录到文件中就可以了,但足够了。 我知道可能存在其他更复杂和完整的框架,但是我想使其尽可能地简单,而axis,cxf等都增加了我想避免的大量开销。 谢谢! 问题答案:

  • 问题内容: 我正在尝试使用JDK8运行Aspectj- Maven插件。但是它给出了诸如“无法解析类型java.lang.CharSequence的错误。它是从所需的.class文件中间接引用的” 有关如何解决的任何帮助,或者Aspectj-maven-plugin是否支持JDK8。我正在使用AspectJ–Maven插件的1.6版本。 问题答案: 我必须达到相同的目标,而且我疯狂地试图弄清楚这一

  • 我正在尝试用JDK8运行aspectj-maven插件。但是它给出了一些错误,比如“无法解析java.lang.CharSequence类型。它是从必需的。class文件间接引用的” 任何有关如何解析的帮助,或者aspectj-maven-plugin是否支持JDK8。我使用的是1.6版本的AspectJ--maven-plugin。