cxf錯誤處理

備忘文件,有些亂

引入cxf後報錯:

Caused by: java.lang.NoSuchMethodException: com.sun.xml.bind.v2.runtime.LeafBeanInfoImpl.getTypeNames()
at java.lang.Class.getMethod(Class.java:1604)
at org.apache.cxf.common.util.ReflectionInvokationHandler.invoke(ReflectionInvokationHandler.java:50)
... 63 more

有一篇文章說jdk衝突(http://blog.csdn.net/kojhliang/article/details/6291208)但是我使用myeclipse自帶jdk時報其他錯誤;通過http://www.jarvana.com/jarvana/search?search_type=class&java_class=com.sun.xml.bind.v2.runtime.LeafBeanInfoImpl找到包含com.sun.xml.bind.v2.runtime.LeafBeanInfoImpl類的包還有個stax於是將項目中的

geronimo-stax-api_1.0_spec-1.0.1.jar刪除,項目成功啓動

另貼其他的一些相關錯誤及處理方法:



>>一個異常
org.apache.cxf.interceptor.Fault: No such operation:  (HTTP GET PATH_INFO: /qxqp-web/HelloWorld)
只需要在http://localhost:8080/HelloWorld後面加上:wsdl即正常了。


>>
在SSH jdk6.0 Tomcat6.0環境中使用CXF 運行時報如下錯誤 


Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.apache.cxf.wsdl.WSDLManager' defined in URL [jar:file:/E:/workSpace/T82A/WebRoot/WEB-INF/lib/cxf/cxf-2.1.3.jar!/META-INF/cxf/cxf.fixml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.apache.cxf.wsdl11.WSDLManagerImpl]: Constructor threw exception; nested exception is java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI (from jar:file:/E:/workSpace/T82A/WebRoot/WEB-INF/lib/cxf/jaxb-impl-2.1.7.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.1 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. (See http://java.sun.com/j2se/1.5.0/docs/guide/standards/) 


... 
Caused by: java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI (from jar:file:/E:/workSpace/T82A/WebRoot/WEB-INF/lib/cxf/jaxb-impl-2.1.7.jar!/com/sun/xml/bind/v2/model/impl/ModelBuilder.class) needs 2.1 API. Use the endorsed directory mechanism to place jaxb-api.jar in the bootstrap classloader. (See http://java.sun.com/j2se/1.5.0/docs/guide/standards/) 
... 


按照網上看說,在jdk1.6.0_05\jre\lib\下新建endorsed文件夾,放入jaxb-api.jar還是沒有效果,經過我的仔細閱讀E文,糾正這個錯誤,如果是Tomcat 5.5,則新建文件路徑爲“Tomcat 5.5\common\endorsed”,如果是Tomcat 6.0,則新建路徑爲“Tomcat 6.0\endorsed”。不是在jdk1.6.0_05\jre\lib\


對於找一個jaxb-api.jar的包(比如從netbeans目錄下搜索一下),複製到endorsed目錄下去.
上面的說法都不錯,但在使用myeclipse工具時,注意配置你的環境,若是在jre16下,則應該放到這下面去。


>>
2011-7-12 17:05:49 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
信息: Creating Service {http://webservice.qxqpw.com/}HelloWorldService from class com.qxqpw.webservice.HelloWorld
Exception in thread "main" javax.xml.ws.WebServiceException: Could not find wsdl:binding operation info for web method sayHi.
at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:113)
at $Proxy14.sayHi(Unknown Source)
at com.qxqp.test.TestWebservice.main(TestWebservice.java:12)
必須加上:@WebService 


>>
服務器接口包與客戶端接口包必須相同。

發佈了29 篇原創文章 · 獲贊 6 · 訪問量 6萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章