2009-03-18 22 views
18

Robię to za pomocą JAXB aby wycofać niektóre XML na obiekty Java:JAXB daje mi: java.lang.IllegalArgumentException: jest parametr nie może być null

Mój kod wygląda trochę tak:

InputStream testMsg = getClass().getResourceAsStream("TestDocumentEvent.xml"); 
Unmarshaller unmarshaller = JAXBContext.newInstance(DocumentEvent.class).createUnmarshaller(); 
DocumentEvent unmarshalled = (DocumentEvent) unmarshaller.unmarshal(testMsg); 

jednak, gdy ten kod pojawia się wyjątek:

java.lang.IllegalArgumentException: is parameter must not be null 

Co się dzieje?

Odpowiedz

22

Dzieje się tak, ponieważ InputStream, który przechodzisz do unmarshaller (parametr "is", geddit) ma wartość null, sprawdź, czy nazwa zasobu jest poprawna.

+2

Wiem, odpowiedziałem na własne pytanie. Dodałem to, ponieważ nie ma zbyt wielu informacji na ten temat w Google, a błąd nie jest aż tak czytelny. – SCdF

+2

Nie wiem, wydaje mi się to dość oczywiste - jeśli wywołanie niemagiczne natychmiast narzeka, że ​​jego argument jest nieważny, co jest nieczytelne o tym? –

+2

Mówisz, że "IS" jest skrótem od "InputStream" w skardze? Tak, to trochę niejasne, ale przynajmniej z kontekstu łatwo to rozgryźć. – Eddie

Powiązane problemy