Unmarsheller.unmarshal(Source)api不适用于JDK1.7

时间:2014-04-28 17:14:14

标签: java jaxb unmarshalling

我无法使用JDK1.7编译以下JAXB Unmarshalling代码。

    private Foo retrieveUnmarshalData(Source source) {  
    try {  
     JAXBContext jaxbContext = JAXBContext.newInstance(ObjectFactory.class);  
     Unmarsheller unmarshaller = jaxbContext.createUnmarsheller();  
     JAXBElement<Foo> jaxbElement = (JAXBElement<Foo>)unmarshaller.unmarshal(source);  
     Foo foo = jaxbElement.getValue();
     return foo;    
    }  
    catch(JAXBException exception){
      // catch exception
    }

当我尝试编译上面的代码 unmarshaller.unmarshal(source) API不适用于JDK1.7。

我访问了很多论坛,但没有运气。如果有人在前面遇到过这个问题,请告诉我,更改解组逻辑是唯一的选择,或者其他任何API都可以解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

来自Source方法的unmarshal肯定仍然存在于Java SE 7(JDK 1.7)中包含的JAXB 2.2 API中。

由于Java SE 7包含javax.xml.transform API,因此您需要确保不将它们捆绑到应用程序中或将其他版本添加到冲突的类路径中。此外,如果您使用的是OSGi环境,请确保在清单中导入javax.xml.transform包。