我创建了一个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发行版。
但那些罐子也犯了同样的错误。
答案 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
依赖解决了这个问题。