java实现webservice的CXF框架和JDK1.6的冲突问题

        之前一直在做一个要涉及到webservice的项目,最后项目组决定采用cxf框架做。然后就出现了一个很奇怪的问题,成员能正常运行webservice的服务,而我的机器上运行的话总是会出现 com.sun.xml.bind.v2.runtime.LeafBeanInfoImpl不能找到getTypeNames方法的错误。在网上找了很久都没有找到相关的资料。弄了一个学期都没弄好,这个学期后来觉得可能是jdk的问题。

    最终发现是什么问题。原来是cxf里的jaxb包的com.sun.xml.bind.v2.runtime.LeafBeanInfoImpl类会和jdk自带的com.sun.xml.bind.v2.runtime.LeafBeanInfoImpl冲突,导致项目直接去调用jdk的类,而不去调用jaxb里的包,然后就会出现和cxf其他包不兼容的情况了。所以解决方法两点:

  1.设置项目的jre为Myeclipse 6.0自带的jre作为jdk

  2.设置tomcat的jdk也为Myeclipse 6.0自带的jre作为jdk(这是关键的一步)

这样设置后问题就会解决了,因为它自带的jre没有包含jaxb包里面的内容,自然就不会和jaxb里面的内容冲突了。弄了那么久才搞好,希望能给一些也要用到cxf而且又出现这样的错误的人一些帮助吧。

猜你喜欢

转载自blog.csdn.net/kojhliang/article/details/6291208