Как я могу отладить это NullPointerException - PullRequest
1 голос
/ 27 февраля 2012

У меня ошибка при демаршалировании объекта XML на Java с помощью JAXB:

java.lang.NullPointerException
    at com.sun.xml.internal.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$1.parse(RuntimeBuiltinLeafInfoImpl.java:188)
    at com.sun.xml.internal.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl$1.parse(RuntimeBuiltinLeafInfoImpl.java:186)
    at com.sun.xml.internal.bind.v2.runtime.reflect.TransducedAccessor$CompositeTransducedAccessorImpl.parse(TransducedAccessor.java:230)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.LeafPropertyLoader.text(LeafPropertyLoader.java:50)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallingContext.text(UnmarshallingContext.java:483)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.InterningXmlVisitor.text(InterningXmlVisitor.java:78)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.StAXEventConnector.handleCharacters(StAXEventConnector.java:173)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.StAXEventConnector.bridge(StAXEventConnector.java:127)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal0(UnmarshallerImpl.java:392)
    at com.sun.xml.internal.bind.v2.runtime.unmarshaller.UnmarshallerImpl.unmarshal(UnmarshallerImpl.java:368)

Как мне найти причину?

некоторые подробности:

часть xml, которую я пытаюсь проанализировать:

<member_resources>
                    <__field_location__>
                            <directive>
                                    sun-sat
                            </directive>
                            <file>
                                    null
                            </file>
                            <line>
                                    0
                            </line>
                    </__field_location__>
                    <sun-sat>
                            00:00-24:00 tester2
                    </sun-sat>
                    <__field_location__>
                            <directive>
                                    isLine
                            </directive>
                            <file>
                                    null
                            </file>
                            <line>
                                    0
                            </line>
                    </__field_location__>
                    <isLine>
                            true
                    </isLine>
            </member_resources>

при остановке на событии, которое вызвало это, я получаю:

next event <__field_location__>
next event <directive>
next event sun-sat
next event <file>
next event null

Ответы [ 3 ]

3 голосов
/ 27 февраля 2012

Хороший подход заключается в использовании источника JAXB (его реализация) и IDE для отладки.

3 голосов
/ 27 февраля 2012

Добавить точку останова исключения для NullPointerException.Когда он попадет, исследуйте несколько уровней выше в стеке вызовов, чтобы выяснить состояние локальных переменных, вы, вероятно, получите представление о том, что является нулем.

1 голос
/ 27 февраля 2012

Ну, отправной точкой может быть установка точки останова при вызове демаршалера и проверка, какие именно аргументы передаются.

Первое, что я проверю, это то, что вы передаете на самом деле xml, и что оно правильно и корректно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...