2010-10-05 3 views
2

У кого-нибудь есть EclipseLink MOXy (я использую eclipselink 2.1.0) для работы с Java 5? Всякий раз, когда я пытаюсь размонтировать, я получаю исключение нулевого указателя в org.eclipse.persistence.oxm.record.UnmarshalRecord, в методе startCDATA() (xPathNode имеет значение null). Точно такой же код и XML прекрасно работают в Java6.Использование EclipseLink MOXy с Java 1.5

+0

Я был в состоянии последовательно воспроизвести это, пытаясь распаковать файл XML, содержащий узел CDATA, но не имеют соответствия Java-акцессоры. Если узел не был узлом cdata, все работало нормально, этот узел просто пропустил в unmarshalling (чего я и ожидал). Это похоже на Java5, а не на Java6. – Frothy

ответ

1

Я ведущий специалист по MOXy. Можете ли вы предоставить трассировку стека & более подробную информацию о вашем прецеденте?

Для получения дополнительной информации о Moxy проверить:

Re вашего обновления:

я не был в состоянии воспроизвести это на мой конец. Я использую следующий env. У вас есть тест, вы можете отправить ([email protected]) или указать на то, что я делаю по-разному ?:

  • JDK: 1.5.0_22
  • EclipseLink 2.1.0

следующая модель:

package cdata; 

import javax.xml.bind.annotation.XmlRootElement; 

@XmlRootElement 
public class Customer { 

    private String firstName; 
    private String lastName; 

    public String getFirstName() { 
     return firstName; 
    } 

    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 

    public String getLastName() { 
     return lastName; 
    } 

    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 

} 

Демо-код:

package cdata; 

import java.io.File; 

import javax.xml.bind.JAXBContext; 
import javax.xml.bind.Marshaller; 
import javax.xml.bind.Unmarshaller; 

public class Demo { 

    public static void main(String[] args) throws Exception { 
     JAXBContext jc = JAXBContext.newInstance(Customer.class); 

     Unmarshaller unmarshaller = jc.createUnmarshaller(); 
     Customer customer = (Customer) unmarshaller.unmarshal(new File("src/cdata/input.xml")); 

     Marshaller marshaller = jc.createMarshaller(); 
     marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); 
     marshaller.marshal(customer, System.out); 
    } 
} 

и XML:

<?xml version="1.0" encoding="UTF-8"?> 
<customer> 
    <firstName>Jane</firstName> 
    <middleName><![CDATA[<?xml version="1.0"?>]]></middleName> 
    <lastName>Doe</lastName> 
</customer> 
+0

Спасибо, что проверили это так быстро! Я на самом деле понял это. Я добавлял EclipseLink через Maven и не имел необходимых зависимостей, которые включены в версию, доступную для загрузки, добавленную в мой проект (или не все из них, по крайней мере). Как только у меня это было, все работало как шарм! – Frothy

+0

Похоже, я прыгнул с пистолета, назвав это исправленным ... Я добавил детали к исходному сообщению. – Frothy

+0

Я еще не смог воспроизвести это. Я обновил свой ответ тем, что я пробовал. Можете ли вы представить какие-либо подробности о том, чем я могу отличаться от вас? –

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