根據錯誤提示信息,去查看了些文檔,發現原來java6中rt.jar包中已經發行了jaxb-api-2.0版本。而且在程序啓動時,jre先load這個包,導致cxf依賴的jaxb-api-2.1包中的某些class,就無法工作。sun提供瞭解決方案是endorsed文件下放這些準備覆蓋系統自帶的包!也就是jaxb-api-2.1.jar , 別忘了也把jaxb-impl-2.1.x 也放進去!
Java6
$JAVA_HOME/lib/endorsed (or$JDK_HOME/jre/lib/endorsed)
tomcat
Tomcat 5.5,則新建文件路徑爲“Tomcat 5.5/common/endorsed”,
Tomcat 6.0,則新建路徑爲“Tomcat 6.0/endorsed”。
Jboss請參考
http://nwangwei.spaces.live.com/Blog/cns!3A3D02B743E87051!240.entry
由此可以看出,其他程序只要依賴jaxb-api-2.1以上的程序都會有類似的問題!例如 很多webservice框架就直接依賴這個包。
這個問題給工程的部署帶來了麻煩,怎麼解決這個問題就要看sun發佈新的jdk是否升級jaxb-api了。