InetAddress.getLocalHost () бросает UnknownHostException

Номера версий обычно не представляют отдельные компоненты. Для некоторых людей/программного обеспечения числа довольно произвольны. Для других различные части строки номера версии действительно представляют разные вещи. Например, некоторые системы увеличивают части номера версии, когда формат файла изменяется. Так V 1.2.1 формат файла, совместимый со всеми другими версиями V 1.2 (1.2.2, 1.2.3, и т.д.), но не с V 1.3. В конечном счете Вам решать, какую схему Вы хотите использовать.

82
задан jhwist 10 December 2009 в 15:02
поделиться

3 ответа

По доброй традиции, я могу еще раз ответить на свой вопрос:

Похоже, InetAddress.getLocalHost () игнорирует /etc/resolv.conf, а только смотрит в файле / etc / hosts (где я не указал ничего, кроме localhost). Добавление IP-адреса и имени хоста в этот файл решает проблему, и исключение исчезает.


Вышеупомянутый ответ почти правильный, и я получил подсказку сверху, и моя проблема решена ... Спасибо.

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

Шаги:

  • Откройте / etc / hosts, записи могут выглядеть, как показано ниже.

     127.0.0.1 localhost localhost. локальный домен localhost4 localhost4.localdomain4
    :: 1 локальный хост localhost.localdomain localhost6 localhost6.localdomain6
    
  • вам нужно добавить еще одну строку над этим любым редактором, например vi или gedit. localhost например,

     192.168.1.73 my_foo localhost
    

Теперь общий файл может выглядеть так:

192.168.1.73 my_foo localhost
127.0.0.1    localhost localhost.localdomain localhost4 localhost4.localdomain4
::1          localhost localhost.localdomain localhost6 localhost6.localdomain6
  • Просто сохраните его и снова запустите свой java ... код, ваша работа сделана.
115
ответ дан 24 November 2019 в 09:16
поделиться

Поиск хостов в Solaris использует /etc/nsswitch.conf , поэтому в зависимости от того, что написано в строке 'hosts:', он определяет, что / etc / hosts ], NIS, DNS и / или LDAP следует проконсультироваться.

Если вы используете только хосты и DNS, вы должны иметь это в /etc/nsswitch.conf :

hosts: files dns

Причина, по которой работает nslookup desvearth01 , заключается в том, что nslookup напрямую обращается к /etc/resolv.conf . Если вы хотите лучше проверить командную строку, используйте команду:

getent hosts desvearth01
4
ответ дан 24 November 2019 в 09:16
поделиться

У меня тоже проблемы по этому поводу. Мне нужно провести дополнительное тестирование, но похоже NetworkInterface.getNetworkInterfaces () может быть более надежным. Я думаю, что это не поиск, а просто захват IP.

Я использую его как «следующий лучший», когда getLocalHost () дает сбой.

0
ответ дан 24 November 2019 в 09:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: