当前位置: 首页 > 面试题库 >

使用CXF捕获Web服务异常:NoClassDefFoundError:SOAPFaultBuilder

宗政松
2023-03-14
问题内容

我一直在使用Apache CXF
wsdl2java生成的代码来调用Web服务的方法已有一段时间了,到目前为止,它一直运行良好。.我遇到的问题是,当Web服务(在我身旁实现)时合法地引发肥皂异常,CXF出现以下错误消息:

无法初始化com.sun.xml.internal.ws.fault.SOAPFaultBuilder类

我正在使用Ubuntu 9.04,OpenJDK(IcedTea6 1.4.1)6b14-1.1.1-0ubuntu11,Maven2和CXF
2.2.3。目前,我对如何解决此问题一无所知,因为我使用的代码和设置似乎很简单。有人能在正确的方向指出我的意思吗?让我知道是否可以发布更多详细信息。

这是返回的完整堆栈跟踪:

java.lang.NoClassDefFoundError: Could not initialize class com.sun.xml.internal.ws.fault.SOAPFaultBuilder
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:107)
    at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78)
    at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:107)
    at $Proxy36.downloadPDB(Unknown Source)
    at path.to.my.code.downloadInvalidFileID(SingleMethodTest.java:64)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59)
    at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98)
    at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79)
    at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87)
    at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77)
    at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42)
    at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88)
    at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
    at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
    at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
    at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
    at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
    at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:62)
    at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:140)
    at org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:127)
    at org.apache.maven.surefire.Surefire.run(Surefire.java:177)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:338)
    at org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:997)

问题答案:

关于该堆栈跟踪,有两个有趣的事情:

1)查找SAAJ实施存在问题。可能在类路径中添加saaj-impl.jar可能会解决该问题。

2)根本不使用CXF。它使用jre中内置的Sun JAX-WS参考实现。因此,似乎根本没有拾取cxf jar。



 类似资料:
  • 我在我们的一个开发环境中得到了以下异常。但是它在另一个环境中工作得很好。无法抓住窍门。有人能帮忙吗?

  • 经过几天的搜索,阅读了几乎所有与之相关的内容,我终于在这里发布了我的问题,因为我找不到解决我的具体问题的方法。 我希望我的REST WebServices返回已抛出的原始异常,或者至少返回正确的StackTrace。为了测试这个,我使用JUnit集成测试和Wildfly 13作为应用程序服务器。经过研究,我找到了2个可能的解决方案。 1.Using异常映射 虽然这个神奇的东西捕获了我的所有异常并允

  • flutter:==图像资源服务捕获的异常:引发以下断言解析图像编解码器:flutter:无法加载资产:download.png flutter:flutter:当引发异常时,这是堆栈:flutter:#0 platformassetbundle.load(包:flutter/src/services/asset_bundle.dart:221:7)flutter:flutter:#1 asset

  • 我有一个CXF webservice,它支持基于JMS的SOAP,在这里我使用ActiveMQ作为消息代理系统。soap消息被发送到请求队列,soap响应被发送回回复队列。现在我计划用ActiveMQ替换RabbitMQ。但我面临的问题是RabbitMQ没有实现JMS API。我们可以将RabbitMQ用于SOAP/JMS Web服务吗? 注意:我使用的是org。阿帕奇。cxf。运输jms。JMS

  • 我正在学习如何使用apache cxf构建rest服务,并学习了一个教程。但当我运行代码时,我遇到了以下异常 我的cxf.xml文件是这样的 请帮我解决这个问题。

  • 我试图使用eclipse、tomcat和CXF部署一个简单的Web服务。 3)看起来一切都很好。将web.xml和beans.xml文件添加到WEB-INF文件夹中: web.xml beans.xml