java.lang.ClassCastException:com.sun.xml.bind.v2.runtime.JAXBContextImpl无法强制转换为com.sun.xml.bind.api.JAXBRIContext

时间:2013-06-14 17:28:14

标签: java web-services jax-ws

我创建了一个jaxws Web服务。我完全遵循了url

服务完美无误。但是当请求命中它时服务器有错误。

SEVERE: caught throwable
java.lang.ClassCastException: com.sun.xml.bind.v2.runtime.JAXBContextImpl cannot be cast to com.sun.xml.bind.api.JAXBRIContext
    at com.sun.xml.ws.db.glassfish.JAXBRIContextFactory.newContext(JAXBRIContextFactory.java:74)
    at com.sun.xml.ws.spi.db.BindingContextFactory.create(BindingContextFactory.java:149)
    at com.sun.xml.ws.message.jaxb.JAXBMessage.create(JAXBMessage.java:160)
    at com.sun.xml.ws.fault.SOAPFaultBuilder.createSOAP11Fault(SOAPFaultBuilder.java:433)
    at com.sun.xml.ws.fault.SOAPFaultBuilder.createSOAPFaultMessage(SOAPFaultBuilder.java:210)

我检查了stackoverflow和许多其他网站都说jar文件冲突。
我用的是java-6-openjdk。
以下是jetty服务器中的jar文件列表。

  

gmbal-api-only.jar
ha-api.jar
jaxb-core.jar
  jaxb-impl.jar
jaxws-rt.jar
management-api.jar
  policy-2.3.1.jar
stax-ex.jar
streambuffer-1.5.1.jar

由于上面的罐子不起作用,我试过用 转here
下载JAX-WS RI发行版。

但那些罐子也犯了同样的错误。

3 个答案:

答案 0 :(得分:3)

我也遇到过同样的异常,并且稍微用谷歌搜索它确认它是因为classpath / jar问题。

我正在使用Java 6.0作为构建和运行时环境,我的项目设置包含 jaxb-api.jar和jaxb-impl.jar 我只是从classpath中删除了这两个jar并且它可以正常工作。

好像我们有Java 6.0,我们不需要使用明确的JAX绑定jar。它默认带有Java 6.0。

答案 1 :(得分:1)

检查此主题:web client for web service。我认为的主要问题是你有几个版本不同的jaxb jar。例如,我认为jaxb已经是jaxws-rt.jar的一部分,这意味着你不需要jaxb-core.jar和jaxb-impl.jar。

答案 2 :(得分:0)

在我的 Java 7 项目中发生了同样的错误。删除 com/sun/xml/bind/jaxb-impl-2.2.6.jar com/sun/xml/bind/jaxb-xjc-2.2.6.jar

依赖解决了这个问题。