cxf客户端调用问题

14年前

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.7lib下的jaxb-api-2.1.jargeronimo-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 的安装。