作为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.xml中包含了jaxws-api依赖项,但仍然没有成功
<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/
您只包含了API类。您的项目还需要一些实现类(工件(。一种可能的实现是jaxws-ri:
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-ri</artifactId>
<version>2.3.1</version>
</dependency>
从命令行运行
我在直接从命令行(在mac上(运行wsdl2java
时遇到了这种情况。wsdl2java
脚本不是很智能,所以您必须帮助它。
从apache网站下载CXF工具后,应该在运行可执行文件之前指定它们的位置。
export CXF_HOME=/Users/dimitar/Downloads/apache-cxf-4.0.0
export CLASSPATH=$CLASSPATH:$CXF_HOME/lib/*
export PATH=$PATH:$CXF_HOME/bin
感谢您的回复Volo Myhal。我已经包含了jaxws-rt依赖关系。但我仍然不断得到NoClassDefFoundError。
这个问题是在从.m2文件夹手动将所需的jar添加到我们的本地服务器路径后解决的