Как я могу получить причину ошибки в Java?

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

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. Мне нужно ваше предложение, спасибо...

1 ответ

Решение

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

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

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

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

Другие вопросы по тегам