java.net.UnknownHostException: недопустимое имя хоста для сервера: локальный

124

Какие шаги я должен предпринять для устранения ошибки:

java.net.UnknownHostException: Invalid hostname for server: local

Я добавил новое имя виртуального хоста в эмулятор Android, но результат возвращается к

 java.net.UnknownHostException virtualhostname at 
  java.net.InetAddress.lookUpHostByName(InetAddress.java:506)

Когда я набираю свой URL-адрес виртуального хоста на своем ПК, он отображается на экране. Опять же, когда я запускал эмулятор и проверял Logcat, я не мог прочитать или проверить статус HTTP, если 200, 202 или номер кода ошибки. Он просто вернулся вUnknownHostException

Ашиш Агарвал
источник
6
немного больше информации помогло бы нам решить проблему проще
зажим
вы за прокси-сервером и настроили параметры прокси? Если это так, вам может потребоваться исключить localhost и другие хосты, которым не нужна помощь прокси-сервера для разрешения на действительный IP-адрес.
asgs 04
Я добавил новое имя виртуального хоста в эмулятор Android, но результат возвращается к «java.net.UnknownHostException virtualhostname at java.net.InetAddress.lookUpHostByName (InetAddress.java:506)». Когда я набираю свой URL-адрес виртуального хоста на своем ПК, он отображается на экране. Опять же, когда я запускал эмулятор и проверял Logcat, я не мог прочитать или проверить статус HTTP, если 200, 202 или номер кода ошибки. Он просто вернулся в «UnknownHostException»
Дэвид Дималанта

Ответы:

66

На самом деле исключение говорит о том, что не существует известного сервера с именем "local". Я предполагаю, что вы пытаетесь подключиться к локальному компьютеру. Попробуйте "localhost"вместо этого указать имя хоста или, возможно,127.0.0.1 или ::1(последний - IPv6).

Из документации javadocs :

Брошено, чтобы указать, что IP-адрес хоста не может быть определен.

127.0.0.1или ::1 или "localhost"всегда должен быть интерфейсом обратной связи, поэтому, если это не сработает, я буду очень удивлен.

Если в вашей сети действительно есть сервер, называемый «локальным» - проверьте настройки DNS или добавьте его в файл hosts.

Андре Ласло
источник
1
В некоторых реализациях, по-видимому, может потребоваться перезапуск JVM, чтобы изменения шлюза / DNS вступили в силу.
Андре Ласло
69

У меня была такая же проблема на моем Mac. Я обнаружил проблему, когда пингнул свой $HOSTNAMEс терминала, и он вернулся ping: cannot resolve myHostName: Unknown host.

Решить:

  1. Сделайте echo $HOSTNAMEна своем терминале.
  2. Независимо имя машины он показывает (позволяет сказать myHostName), попробуйте пинговать его: ping myHostName. Если он вернется, ping: cannot resolve myHostName: Unknown hostдобавьте запись в свой /etc/hostsфайл.
  3. Для этого отредактируйте /etc/hostsфайл и добавьте следующее:

    127.0.0.1 myHostName

Надеюсь, поможет.

Шобхит Пури
источник
Интересно, как это работает на некоторых машинах из коробки, а на некоторых мы должны добавить запись hosts
Skynet
16

java.net.UnknownHostException: узел не разрешен:

Брошено, чтобы указать, что IP-адрес хоста не может быть определен.

Это исключение также возникает, когда вы подключены к действующему Wi-Fi, но маршрутизатор не получает Интернет. Это очень легко воспроизвести:

  1. Подключитесь к действующему Wi-Fi
  2. Теперь отсоедините кабель от роутера, когда роутер подключен.

Вы заметите эту ошибку !!

Вы не можете решить эту проблему, вы можете только изящно уведомить пользователя. (что-то вроде - «Невозможно установить соединение»)

ясень
источник
1
В более общем плане было бы сказать, что исключение возникает, когда хост не найден в DNS или когда сам DNS не может быть найден, например, по какой-либо причине сетевого подключения или неправильной конфигурации.
Marquis of Lorne
Так как же решить эту проблему?
cokedude
2
Вы не можете решить эту проблему, вы можете только изящно уведомить пользователя. (что-то вроде - «Невозможно установить соединение»)
Эш
Что означает наличие этой проблемы в школьной сети, но не мое личное соединение дома?
нитрат натрия
@sodiumnitrate Может быть, ваша школьная сеть требует сначала аутентификации по id / pwd .. Попробуйте открыть любой веб-адрес в браузере и посмотрите, правильно ли он отображается
Эш,
7

Это не относится к вопросу, но этот вопрос возник, когда я искал в Google упомянутое UnknownHostException, и исправление нигде больше не найдено, поэтому я подумал, что добавлю здесь ответ.

Постоянно поступали следующие исключения:

java.net.UnknownHostException:  google.com
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:184)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at java.net.Socket.connect(Socket.java:538)
    at java.net.Socket.<init>(Socket.java:434)
    at java.net.Socket.<init>(Socket.java:211)
    ... 

Как бы я ни пытался подключиться к любому действующему хосту, его вывод в терминал тоже не помогал. Все было правильно.

Решение

Не вызывает trim() строку хоста, содержащую пробелы . При написании прокси-сервера хост был получен из заголовков HTTP с использованием split(":")точки с запятой дляHOST заголовка. Это оставляет пробел и приводит к тому, что UnknownHostExceptionкак хост с пробелом не является допустимым хостом. Делаем ставку host = host.trim()на String hostрешенный неоднозначный вопрос.

matrixanomaly
источник
Это была моя проблема.
Стерлинг Диаз,
1
Спасибо - это меня спасло. В моем случае хост String, передаваемый в функцию, имел суффикс \ n, поэтому запуск .trim()на нем исправил его для меня!
rayzinnz
1
Спасибо, я слишком много пытался понять, в чем проблема, пока не понял, что ввел пробел между двумя разными IP-адресами.
Sandoval0992
5

Это могло произойти по разным причинам.

1) Проверьте, подключен ли у вас VPN, иногда вы можете получить эту ошибку, если да

"Ваше имя хоста, localhost преобразуется в адрес обратной связи: 127.0.0.1; вместо этого используется 10.xxx.1.193 (на интерфейсе cscotun0)"

2) Проверьте свой $ HOSTNAME

3) попробуйте выполнить ping $ HOSTNAME в командной строке, и если это не сработает, измените настройки системы, чтобы ваш локальный хост отвечал на запросы ping.

Сидхарт Н. Кашьяп
источник
5

Ваше имя хоста отсутствует. JBoss использует эту переменную среды ($ HOSTNAME) при подключении к серверу.

[root@xyz ~]# echo $HOSTNAME
xyz

[root@xyz ~]# ping $HOSTNAME
ping: unknown host xyz

[root@xyz ~]# hostname -f
hostname: Unknown host

Это может быть вызвано множеством причин. Прокомментируйте, если обнаружите новую причину.

Для взлома, пока вы не сможете окончательно решить эту проблему на своем сервере, вы можете добавить строку в конец файла / etc / hosts:

127.0.0.1 xyz.xxx.xxx.edu xyz
МакГайвер
источник
Профилактическое обслуживание: unix.stackexchange.com/questions/248616/…
MacGyver
4

Попробуйте следующее:

String url = "http://www.google.com/search?q=java";
URL urlObj = (URL)new URL(url.trim());
HttpURLConnection httpConn = 
(HttpURLConnection)urlObj.openConnection();
httpConn.setRequestMethod("GET");
Integer rescode = httpConn.getResponseCode();
System.out.println(rescode);

Обрезать () URL

Рекс Рой
источник
Обрезка жестко запрограммированной строки без пробелов не имеет смысла.
Блейк Макбрайд,
1

Попытка подключиться к локальному компьютеру. Попробуйте вместо этого использовать имя хоста "localhost" или, возможно, :: / - последний из них - ipv6

Джошуэйн Диестро
источник
1

Пожалуйста, попробуйте установить переменную среды SPARK_LOCAL_IP на IP-адрес (может быть localhost, т.е. ваш собственный IP-адрес), к которому вы хотите подключиться. Например

$ export SPARK_LOCAL_IP=182.95.208.152

Таким образом, вам не нужно будет изменять существующие настройки Linux. Работал на меня, надеюсь и вам помогает.

Джиоти Гупта
источник
0

Подключите свой мобильный телефон к другому Wi-Fi-соединению с другим поставщиком услуг . Я не знаю точной проблемы, но мне не удалось подключиться к серверу с определенным поставщиком услуг, но он работает, когда я подключаюсь к другому поставщику услуг. Так что попробуйте!

Сурадж Вайшнав
источник
0

У меня возникла эта проблема в моем приложении для Android, когда при захвате XML-файла формат моей ссылки был недействительным, я переформатировал полный URL-адрес, и он сработал.

vasmos
источник
0

Если вы здесь, потому что ваш эмулятор дает вам это исключение, перейдите в Инструменты> AVD Manager в вашем эмуляторе Android и выполните холодную загрузку вашего эмулятора.

Феликс Фавор Чинемерем
источник
-1

Если в вашем файле / etc / localhosts есть запись, как показано ниже: Добавьте запись имени хоста, как показано ниже:

127.0.0.1 local host (add your hostname here)
::1 (add hostname here) (the last one is IPv6).

Это должно решить проблему.

user8326951
источник