1

Я пытаюсь использовать API Java elasticsearch. И я получил эту ошибку:Как я могу получить ошибку в Java?

java.lang.NullPointerException 
at java.io.Reader.<init>(Reader.java:78) 
at java.io.InputStreamReader.<init>(InputStreamReader.java:113) 
at org.elasticsearch.node.internal.InternalSettingsPreparer.randomNodeName(InternalSettingsPreparer.java:198) 
at org.elasticsearch.node.internal.InternalSettingsPreparer.finalizeSettings(InternalSettingsPreparer.java:177) 
at org.elasticsearch.node.internal.InternalSettingsPreparer.prepareSettings(InternalSettingsPreparer.java:64) 
at org.elasticsearch.client.transport.TransportClient$Builder.build(TransportClient.java:119) 
at TryElastic.main(TryElastic.java:64) 

Итак, как я могу получить причину ошибки? Он только сказал, что это ошибка нулевого указателя. Единственным файлом, который я могу открыть и редактировать, является мой файл «TryElastic.java». Я хочу знать, какая причина ошибки java.io.Reader. Мне нужна ваша предложить, спасибо ...

+0

Хорошо, посмотрите на строку 64 в «TryElastic.java». Какая линия? – Seelenvirtuose

+0

'at TryElastic.main (TryElastic.java:64)' - Указывает на наличие ошибки в строке номера 64, где вы выполняете некоторую операцию, которая вызывает исключение нулевого указателя. – sandip

+1

Самый эффективный способ - вы должны использовать отладку в своей программе с точкой останова на классе «TryElastic» на 64-й строке. Запустив эту строку, вы должны пойти глубже и выяснить, почему 'null' были предоставлены' InputStreamReader' как параметр конструктора (возможно, у вас нет какого-либо файла или некорректного в источниках, который определяет, что будет передано как параметр для конструктора) –

ответ

0

Если вы посмотрите на исходный код метода, который, вероятно, вызывает NPE

https://github.com/elastic/elasticsearch/blob/master/core/src/main/java/org/elasticsearch/node/internal/InternalSettingsPreparer.java#L172

вы видите, что он пытается загрузить ресурс /config/names.txt, который, очевидно, возвращается null и запускает NPE в конструкторе Reader. (Номера строк Stracktrace не соответствуют точно из-за использования разных версий). К сожалению, Elastic не проверяет поток ресурсов - он действительно должен создать собственное исключение с лучшим сообщением об ошибке.

Для решения этой проблемы вы должны проверить, доступен ли этот ресурс при установке.

+0

oooo, Большое спасибо, я не использую .jar для реализации моего elasticsearch, но я сразу же использую elasticsearch.class –