天天看點

JAXB 2.0 API is being loaded from the bootstrap classloader

轉自:   http://hi.baidu.com/sunxiangwei/blog/item/6f13eec4ee488ea18226ac45.html

 sun的官方說明: http://java.sun.com/j2se/1.5.0/docs/guide/standards/ 

在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目錄下去.

 --------------------------------------------- 以上是轉載,以下是測試 ---------------------------------------------------------

自己測試:

         jre必須是1.6, tomcat5.5的jdk可以是jdk1.5,  jdk和jre下面建立endorsed檔案夾,并放入jaxb-api.jar和jaxws-api.jar是沒用的, 必須把這兩個jar包放入"tomcat5.5\common\endorsed"(沒有這個檔案夾則建立,如果是 tomcat6.0, 則放在"Tomcat6.0\endorsed"), 特把兩個jar共享..

         測試内容: 自制webservices用戶端通路jax-ws的webservices服務端

         測試環境: myeclipse6.5  tomcat5.5  jre1.6  jdk1.5(可以全是1.6)