dnsjava не может разрешить "localhost" на машине с Linux

После того, как я зарегистрировал dnsjava в качестве поставщика DNS по умолчанию, у меня возникла проблема. Он не может разрешить локальные адреса, которые описаны в файле /etc/hosts на моей машине с Linux. Этот файл выглядит примерно так:

127.0.0.1   localhost
127.0.1.1   servername

Поэтому, если я пытаюсь разрешить одно из таких имен, происходит UnknownHostException:

org.xbill.DNS.Address.getByName("localhost");
org.xbill.DNS.Address.getByName("servername");

Это не проблема, когда вы используете dnsjava вместе с провайдером dns по умолчанию. Будучи единственным провайдером, dnsjava вызывает множество ошибок в библиотеках по умолчанию, которые оказываются сильно зависимыми от разрешения локального хоста. Итак, вопрос: как изменить поведение dnsjava для разрешения локальных имен хостов?

Редактировать. Следующий код работает нормально:

java.net.InetAddress.getByName("localhost");

Но метод java.net.InetAddress.getLocalHost() выбрасывает:

java.net.UnknownHostException: servername

1 ответ

dnsjava клиентская библиотека DNS; он разговаривает с DNS-серверами. /etc/hosts не является частью протокола DNS и не dnsjava знать что-нибудь об этом.

См. Этот старый пост в списке рассылки пользователей dnsjava от парня, который его написал: http://old.nabble.com/DNS-Resolve-from-hosts-file-first-then-DNS-Server-td15431381.html

Ничего не изменилось в этом отношении.

Если java.net.InetAddress.getByName() работает, то ваш DNS-сервер настроен на ответ на запросы localhost,

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