java.lang.NullPointerException для NodeList

У меня есть исключение со следующим кодом

  public calculWeightdoc(OWLOntology onto, String xml) {

        for(OWLClass cls: onto.getClassesInSignature()){

        freqConcept(xml, cls);
        System.out.println("la taille de liste : "+list.getLength());

            if(list.getLength()!=0){   
                listConceptRetenus.put(cls, list.getLength());
            }

            else 
                {
                    listConceptRetenus.put(cls, 0);
                }


        }

   }

Это функция FreqConcept

    public void freqConcept(String xmldoc,OWLClass node){
        try {
            String filepath = xmldoc;
            DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
            Document doc = docBuilder.parse(filepath);


             list = doc.getElementsByTagName(node.getIRI().getFragment());


        } catch (ParserConfigurationException pce) {
            pce.printStackTrace();
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } catch (SAXException sae) {
            sae.printStackTrace();
        }
    }

И это исключение:

Exception in thread "main" java.lang.NullPointerException
at com.sun.org.apache.xerces.internal.dom.DeepNodeListImpl.nextMatchingElementAfter(DeepNodeListImpl.java:199)
at com.sun.org.apache.xerces.internal.dom.DeepNodeListImpl.item(DeepNodeListImpl.java:146)
at com.sun.org.apache.xerces.internal.dom.DeepNodeListImpl.getLength(DeepNodeListImpl.java:117)
at com.onto.weight.document.calculWeightdoc.<init>(calculWeightdoc.java:59)
at com.onto.weight.document.Main_Class_une_seule_onto.main(Main_Class_une_seule_onto.java:70)

На самом деле, один и тот же код отлично работает для некоторых онтологий, таких как люди с 60 классами, но для других с важным количеством классов, таких как Dbpedia с 1173 классами, он не работает, я не уверен, проблема в этом или в чем-то другом. ...
Исключение составляет строка list.getLength() в этой функции calculWeightdoc(OWLOntology onto, String xml) .

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


person Nina    schedule 30.07.2018    source источник
comment
Возможный дубликат Что такое исключение NullPointerException и как его исправить?   -  person OH GOD SPIDERS    schedule 30.07.2018
comment
Добавьте минимально воспроизводимый пример. Например, самая короткая строка XML, которая еще позволяет воспроизвести проблему.   -  person M. Prokhorov    schedule 30.07.2018
comment
@OHGODSPIDERS, я не уверен, что это обычный случай вопроса NPE - в конце концов, NPE происходит внутри библиотеки DOM, по-видимому, без согласия пользователя.   -  person M. Prokhorov    schedule 30.07.2018
comment
Конечно, это не обычный случай NPE, так как код отлично работает для некоторых онтологий. чтобы ответить на ваш вопрос @M.Prokhorov, я использую один и тот же файл XML для теста и несколько онтологий, так что проблема не в этом ...   -  person Nina    schedule 30.07.2018
comment
поскольку вы не упомянули, какая онтология не работает, помочь вам невозможно. чего вы ожидаете сейчас, учитывая, что внутри сторонней библиотеки возникает ошибка?   -  person UninformedUser    schedule 31.07.2018
comment
Также неясно, какую часть DBpedia вы загружаете и какую версию OWL API используете. Информация важна для отладки, вы уже должны это знать...   -  person UninformedUser    schedule 31.07.2018
comment
Чтобы ответить на комментарии о том, является ли это обычным нулевым указателем или нет - все исключения нулевого указателя являются обычными. Нулевое значение разыменовывается. В этом случае есть трассировки стека, которые печатаются, но здесь не показаны.   -  person Ignazio    schedule 03.08.2018


Ответы (1)


Инициализация списка происходит только в том случае, если ввод не проходит синтаксический анализ. Появляется ли какая-либо трассировка стека при инициализации списка? Если это так, список остается пустым. Чтобы избежать этой проблемы, проверьте, является ли список нулевым, прежде чем обращаться к нему.

person Ignazio    schedule 30.07.2018
comment
вы правы, проблема появляется при попытке инициализации списка. - person Nina; 31.07.2018
comment
Я объяснил проблему как другую тему здесь stackoverflow.com/questions/51612722/ - person Nina; 31.07.2018