OSGI环境下的一个错误:javax.xml.bind.JAXBException: ClassCastException

    在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的配置也可以去掉那个组件。于是都试了下,去掉组件是可以的,但是去掉配置还不行。先解决问题吧,记下来等以后有时间再查具体原因。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值