cxf客戶端調用問題
<P style="TEXT-ALIGN: center; LINE-HEIGHT: normal; TEXT-INDENT: 0cm; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 0; mso-layout-grid-align: none" class=MsoNormal align=center>cxf客戶端調用問題
<P style="TEXT-ALIGN: left; LINE-HEIGHT: normal; TEXT-INDENT: 0cm; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 0; mso-layout-grid-align: none" class=MsoNormal align=left>1.現象:
<P style="TEXT-ALIGN: left; LINE-HEIGHT: normal; TEXT-INDENT: 0cm; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 0; mso-layout-grid-align: none" class=MsoNormal align=left><SPAN style="FONT-FAMILY: 宋體; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋體" lang=EN-US>Caused by: java.lang.LinkageError: JAXB 2.0 API is being loaded from the bootstrap classloader, but this RI (from jar:file:/D:/jb_program/cxf/WebRoot/WEB-INF/lib/jaxb-impl-2.1.12.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/>)
<P style="TEXT-ALIGN: left; LINE-HEIGHT: normal; TEXT-INDENT: 0cm; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 0; mso-layout-grid-align: none" class=MsoNormal align=left><SPAN style="FONT-FAMILY: 宋體; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋體" lang=EN-US>o:p /o:p</SPAN></P>
<P style="TEXT-ALIGN: left; LINE-HEIGHT: normal; TEXT-INDENT: 0cm; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 0; mso-layout-grid-align: none" class=MsoNormal align=left>2.處理
<P style="TEXT-ALIGN: left; LINE-HEIGHT: normal; TEXT-INDENT: 0cm; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 0; mso-layout-grid-align: none" class=MsoNormal align=left>參考文章:http://lxj8495138.javaeye.com/blog/338384
<P style="TEXT-ALIGN: left; LINE-HEIGHT: normal; TEXT-INDENT: 0cm; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 0; mso-layout-grid-align: none" class=MsoNormal align=left>1)檢測放置路徑
<P style="TEXT-ALIGN: left; LINE-HEIGHT: normal; TEXT-INDENT: 0cm; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 0; mso-layout-grid-align: none" class=MsoNormal align=left><SPAN style="FONT-FAMILY: 宋體; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋體" lang=EN-US>public class Test {
<P style="TEXT-ALIGN: left; LINE-HEIGHT: normal; TEXT-INDENT: 0cm; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 0; mso-layout-grid-align: none" class=MsoNormal align=left><SPAN style="FONT-FAMILY: 宋體; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋體" lang=EN-US> public static void main(String[] args) {
<P style="TEXT-ALIGN: left; LINE-HEIGHT: normal; TEXT-INDENT: 0cm; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 0; mso-layout-grid-align: none" class=MsoNormal align=left><SPAN style="FONT-FAMILY: 宋體; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋體" lang=EN-US> System.out.println(System.getProperty("java.endorsed.dirs"));
<P style="TEXT-ALIGN: left; LINE-HEIGHT: normal; TEXT-INDENT: 0cm; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 0; mso-layout-grid-align: none" class=MsoNormal align=left><SPAN style="FONT-FAMILY: 宋體; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋體" lang=EN-US> }
<P style="TEXT-ALIGN: left; LINE-HEIGHT: normal; TEXT-INDENT: 0cm; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 0; mso-layout-grid-align: none" class=MsoNormal align=left><SPAN style="FONT-FAMILY: 宋體; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋體" lang=EN-US>}
<P style="TEXT-ALIGN: left; LINE-HEIGHT: normal; TEXT-INDENT: 0cm; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 0; mso-layout-grid-align: none" class=MsoNormal align=left>假如輸出結果D:\jdk1.5.0_13\jre\lib\endorsed
<P style="TEXT-ALIGN: left; LINE-HEIGHT: normal; TEXT-INDENT: 0cm; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 0; mso-layout-grid-align: none" class=MsoNormal align=left>2)將apache-cxf-2.2.7的lib下的jaxb-api-2.1.jar、geronimo-jaxws_2.1_spec-1.0.jar (or Sun's jaxws-api-2.1.jar)拷貝到jre\lib\endorsed
<P style="TEXT-ALIGN: left; LINE-HEIGHT: normal; TEXT-INDENT: 0cm; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 0; mso-layout-grid-align: none" class=MsoNormal align=left>3)注意在eclipse環境下,jre運行環境放置到前面</P><SPAN lang=EN-US>o:p
<P style="TEXT-ALIGN: left; LINE-HEIGHT: normal; TEXT-INDENT: 0cm; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 0; mso-layout-grid-align: none" class=MsoNormal align=left><SPAN style="FONT-FAMILY: 宋體; mso-hansi-font-family: 'Times New Roman'; mso-bidi-font-family: 宋體" lang=EN-US>o:p /o:p</SPAN></P>
<P style="TEXT-ALIGN: left; LINE-HEIGHT: normal; TEXT-INDENT: 0cm; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 0; mso-layout-grid-align: none" class=MsoNormal align=left>3.原因
<P style="TEXT-ALIGN: left; LINE-HEIGHT: normal; TEXT-INDENT: 0cm; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 0; mso-layout-grid-align: none" class=MsoNormal align=left>從 Java SE 6 開始,<SPAN lang=EN-US>JAXB 2.x </SPAN>和<SPAN lang=EN-US> JAX-WS 2.x </SPAN>參考實現運行時(除了供應商擴展)成為標準<SPAN lang=EN-US> Java Runtime Environment (JRE) </SPAN>庫的一部分。其本意是鼓勵將這些技術作為<SPAN lang=EN-US> Java </SPAN>標準使用,但是這也帶來一個副作用:為了使用這些技術的更新的版本,可能需要更改<SPAN lang=EN-US> JRE </SPAN>的安裝。</SPAN><SPAN lang=EN-US>o:p/o:p</SPAN></P>
/o:p</SPAN></SPAN></FONT>