概述
在OSGI环境下(felix)使用dosgi-cxf发布webservice发现出现这样的错误:
java.lang.RuntimeException:
Provider com.sun.xml.internal.bind.v2.ContextFactory could not be instantiated:
javax.xml.bind.JAXBException: ClassCastException:
attempting to cast jar:file:/usr/local/java/jdk1.6.0_32/jre/lib/rt.jar!/javax/xml/bind/JAXBContext.class to bundle://89.0:1/javax/xml/bind/JAXBContext.class.
Please make sure that you are specifying the proper ClassLoader
而且在本地window的运行环境里没有这个错误,但是一到了Linux上就出现这个问题。经过分析和查看以后发现在OSGI环境里有个组件叫做:
org.apache.servicemix.specs.jaxb-api-2.2,对应的jar包是:org.apache.servicemix.specs.jaxb-api-2.2-2.2.0.jar,另外在felix的配置文件中配置类似如下:
jre-1.7=
com.sun.org.apache.xpath.internal.jaxp;
javax.accessibility;
javax.activation;
javax.activity;
javax.annotation.processing;
javax.annotation;
javax.crypto.interfaces;
javax.crypto.spec;
javax.crypto;
javax.imageio.event;
javax.imageio.metadata;
javax.imageio.plugins.bmp;
javax.imageio.plugins.jpeg;
javax.imageio.spi;
javax.imageio.stream;
javax.imageio;
javax.jws.soap;
javax.jws;javax.lang.model.element;
javax.xml.bind.attachment;
javax.xml.bind.helpers;
javax.xml.bind.util;
javax.xml.bind;
原来是二者冲突了,找到原因就好办了。首先想到的是可以去掉felix的配置也可以去掉那个组件。于是都试了下,去掉组件是可以的,但是去掉配置还不行。先解决问题吧,记下来等以后有时间再查具体原因。
最后
以上就是乐观棒球为你收集整理的OSGI环境下的一个错误:javax.xml.bind.JAXBException: ClassCastException的全部内容,希望文章能够帮你解决OSGI环境下的一个错误:javax.xml.bind.JAXBException: ClassCastException所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复