cxf客户端调用问题
cxf客户端调用问题
1.现象:
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/>)
2.处理
参考文章:http://lxj8495138.javaeye.com/blog/338384
1)检测放置路径
public class Test {
public static void main(String[] args) {
System.out.println(System.getProperty("java.endorsed.dirs"));
}
}
假如输出结果D:\jdk1.5.0_13\jre\lib\endorsed
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
3)注意在eclipse环境下,jre运行环境放置到前面
3.原因
从 Java SE 6 开始,JAXB 2.x 和 JAX-WS 2.x 参考实现运行时(除了供应商扩展)成为标准 Java Runtime Environment (JRE) 库的一部分。其本意是鼓励将这些技术作为 Java 标准使用,但是这也带来一个副作用:为了使用这些技术的更新的版本,可能需要更改 JRE 的安装。