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

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

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

16 ответов

Решение

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

Из Javadocs:

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

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

Если в вашей сети действительно есть сервер с именем "local" - проверьте настройки DNS или добавьте его в файл hosts.

У меня была такая же проблема на моем 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

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

java.net.UnknownHostException: Хост не разрешен:

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

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

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

Вы увидите эту ошибку!

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

Это не относится к конкретному вопросу, но этот вопрос обнаружился, когда я гуглил для упомянутого 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 решил неоднозначную проблему.

Ваше имя хоста отсутствует. 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

Это может произойти по разным причинам.

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

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

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

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

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

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

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

$ export SPARK_LOCAL_IP=182.95.208.152

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

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

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

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

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

У меня была такая же проблема.

Перезапуск докера был исправлением для меня. По какой-то причине потребовался перезапуск, я не знаю почему, но это сработало.

Попробуйте добавить запись в файл /etc/hosts для локального хоста и указать URL-адрес

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

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

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

Вы должны заменить [] тоже!

Пример [hostname] и вы должны заменить все это чем-то вроде этого:

jdbc:mysql://localhost:3306/openfire
Другие вопросы по тегам