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)

내 PC에 가상 호스트 URL을 입력하면 디스플레이에서 작동합니다. 그런 다음 다시 에뮬레이터에서 실행하고 Logcat을 확인하면 200, 202 또는 오류 코드 번호 인 경우 HTTP 상태를 읽거나 확인할 수 없습니다. 그것은 단순히UnknownHostException


6
좀 더 정보를 쉽게 문제를 해결하는 데 도움 것
클램프

프록시 서버 뒤에 있고 프록시 설정을 구성 했습니까? 그렇다면 유효한 IP 주소를 확인하는 데 프록시 서버의 도움이 필요하지 않은 localhost 및 기타 호스트를 제외해야 할 수 있습니다.
asgs

Android 에뮬레이터에 새 가상 호스트 이름을 추가했지만 결과는 "java.net.InetAddress.lookUpHostByName (InetAddress.java:506)에서 java.net.UnknownHostException virtualhostname"으로 반환됩니다. 내 PC에 가상 호스트 URL을 입력하면 디스플레이에서 작동합니다. 그런 다음 다시 에뮬레이터에서 실행하고 Logcat에서 확인하면 200, 202 또는 오류 코드 번호 인 경우 HTTP 상태를 읽거나 확인할 수 없습니다. 그것은 단순히 "UnknownHostException의"반환
데이비드 Dimalanta

답변:


66

실제로 예외는 "local"이라는 이름의 알려진 서버가 없다는 것입니다. 내 생각에 로컬 컴퓨터에 연결하려고합니다. "localhost"대신 호스트 이름을 사용하거나 127.0.0.1또는 또는 ::1(마지막 이름 은 IPv6)을 사용해보십시오 .

로부터 의 javadoc :

호스트의 IP 주소를 확인할 수 없음을 나타 내기 위해 발생합니다.

127.0.0.1::1또는 "localhost"그 나는 정말 놀랄 것 작동하지 않습니다 그렇다면 항상 루프백 인터페이스해야합니다.

네트워크에 "로컬"이라는 서버가있는 경우 DNS 설정을 검사하거나 호스트 파일에 추가하십시오.


1
일부 구현에서는 분명히 게이트웨이 / DNS 변경 사항을 적용하기 위해 JVM을 다시 시작해야 할 수 있습니다.
André Laszlo 2013 년

68

내 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

도움이 되었기를 바랍니다.


그것은 우리가 상자 밖으로 일부에 일부 시스템에서 작동하는 방법 원더는 호스트 항목 추가
스카이 넷

16

java.net.UnknownHostException : 호스트가 해결되지 않았습니다.

호스트의 IP 주소를 확인할 수 없음을 나타 내기 위해 발생합니다.

이 예외는 유효한 Wi-Fi에 연결되어 있지만 라우터가 인터넷을 수신하지 못하는 경우에도 발생합니다. 이것을 재현하는 것은 매우 쉽습니다.

  1. 유효한 Wi-Fi에 연결
  2. 이제 라우터가 연결되어있는 동안 라우터에서 케이블을 제거하십시오.

이 오류가 발생합니다 !!

당신은 정말로 이것을 해결할 수 없습니다. 당신은 사용자에게 우아하게 만 알릴 수 있습니다. (예 : "연결할 수 없음")


1
을 위해 예를 들어, 호스트가 DNS에없는 경우 또는 DNS 자체를 찾을 수없는 경우 예외가 발생 말을 더 일반적인 것 어떤 네트워크 연결 이유로, 또는 잘못된.
Marquis of Lorne

그렇다면이 문제를 어떻게 해결합니까?
cokedude nov.

2
당신은 이것을 정말로 해결할 수 없습니다. 당신은 사용자에게 우아하게 만 알릴 수 있습니다. (같은 - "연결을 만들 수 없습니다")
애쉬

학교 네트워크에서는이 문제가 있지만 집에서는 개인 연결이 아니라는 것은 무엇을 의미합니까?
질산 나트륨.

@sodiumnitrate 학교 네트워크에서 먼저 id / pwd 인증이 필요할 수 있습니다. 브라우저에서 웹 URL을 열고 제대로 표시되는지 확인하십시오
Ash

7

이것은 질문에 국한되지 않지만이 질문은 내가 언급 한을 검색 할 때 나타 났으며 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() 공백이 포함 된 호스트 문자열을 호출하지 않습니다 . 프록시 서버를 작성할 때 헤더 split(":")에 세미콜론을 사용하여 HTTP 헤더에서 호스트를 얻었습니다 HOST. 이로 인해 공백이 남았 UnknownHostException으며 공백이있는 호스트는 유효한 호스트가 아닙니다. 이렇게 host = host.trim()온 것은 String host모호한 문제를 해결했다.


이것은 내 문제였습니다.
Sterling Diaz

1
감사합니다-이것은 나를 구했습니다. 제 경우에는 함수에 전달되는 문자열 호스트에 \ n 접미사가 있으므로이를 실행 .trim()하면 저를 위해 수정되었습니다!
rayzinnz

1
감사합니다. 두 개의 서로 다른 IP 주소 사이에 공백을 입력 할 때까지 문제가 무엇인지 파악하는 데 너무 많은 시간을 보냈습니다.
Sandoval0992

5

여러 가지 이유로 발생할 수 있습니다.

1) VPN이 연결되어 있는지 확인하세요. 그렇다면 가끔이 오류가 발생할 수 있습니다.

"호스트 이름, localhost는 루프백 주소 : 127.0.0.1; 대신 10.xxx.1.193 사용 (인터페이스 cscotun0)"

2) $ HOSTNAME 확인

3) 명령 줄에서 $ HOSTNAME 핑을 시도하고 작동하지 않으면 시스템 설정을 조정하여 로컬 호스트가 핑에 응답하도록합니다.


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


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 Trim ()


공백없이 하드 코딩 된 문자열을 자르는 것은 의미가 없습니다.
Blake McBride

1

로컬 컴퓨터에 연결을 시도합니다. 대신 호스트 이름 "localhost"를 사용하거나 :: /-마지막 항목은 ipv6입니다.


1

SPARK_LOCAL_IP 환경 변수를 연결하려는 IP 주소 (로컬 호스트, 즉 자신의 IP 주소 일 수 있음)로 설정하십시오. 예

$ export SPARK_LOCAL_IP=182.95.208.152

이렇게하면 기존 Linux 설정을 변경할 필요가 없습니다. 나를 위해 일했고 희망도 당신을 돕습니다.


0

다른 서비스 제공 업체 와 다른 Wi-Fi 연결 모바일을 연결 하십시오 . 정확한 문제는 모르지만 특정 서비스 제공 업체의 서버에 연결할 수는 없지만 다른 서비스 제공 업체에 연결하면 작동합니다. 그래서 그것을 시도하십시오!


0

내 링크의 형식이 유효하지 않은 xml 파일을 가져올 때 Android 앱 에서이 문제가 발생하여 전체 URL로 다시 형식을 지정하고 작동했습니다.


0

에뮬레이터가 예외를 제공하기 때문에 여기에있는 경우 Android 에뮬레이터에서 도구> AVD 관리자로 이동하고 에뮬레이터를 콜드 부팅합니다.


-1

/ etc / localhosts 파일에 아래와 같은 항목이있는 경우 : 아래와 같이 호스트 이름 항목을 추가합니다.

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

이렇게하면 문제가 해결됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.