2014-04-28 2 views
1

Я не могу скомпилировать приведенный ниже код JAXB Unmarshalling с помощью JDK1.7.Unmarsheller.unmarshal (Источник) api недоступен с JDK1.7

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 (источник) API не доступен с JDK1.7.

Я посетил много форумов, но не повезло. Если кто-то столкнулся с этой проблемой раньше, сообщите мне, что изменение логики unmarshalling - это единственный вариант или любой другой API, который разрешит эту проблему?

+1

Уверены ли вы? Он находится в [документации] (http://docs.oracle.com/javaee/7/api/javax/xml/bind/Unmarshaller.html#unmarshal (javax.xml.transform.Source)). Не могли бы вы разместить сообщение SSCCE, чтобы яснее понять, чего вы пытаетесь достичь? –

ответ

1

Метод unmarshal от Source определенно по-прежнему присутствует в API JAXB 2.2, которые включены в Java SE 7 (JDK 1.7).

Поскольку Java SE 7 содержит javax.xml.transform API, вам нужно будет убедиться, что вы не связывая их в приложение или добавить другую версию в классе путь, что конфликты. Также, если вы используете среду OSGi, убедитесь, что вы импортировали пакет javax.xml.transform в манифест.

+0

Спасибо всем за ваши ценные предложения. javax jar имеет приоритет и показывает мне только 2 api's. Когда я удаляю javax.jar из моей библиотеки, я не получаю ошибок компиляции. Проблема решена. –

Смежные вопросы