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.UnknownHostException virtualhostname at java.net.InetAddress.lookUpHostByName(InetAddress.java:506)」に戻ります。PCで仮想ホストのURLを入力すると、ディスプレイで機能します。次に、エミュレータを実行してLogcatを確認したところ、200、202、またはエラーコード番号の場合、HTTPステータスを読み取ったり確認したりできませんでした。それは単に "UnknownHostException"に戻りました
David Dimalanta

回答:


66

例外が本当に言っているのは、「ローカル」という名前の既知のサーバーがないということです。私の推測では、ローカルコンピュータに接続しようとしています。"localhost"代わりにホスト名を使用するか、127.0.0.1または::1(または最後のものがIPv6)

以下からのJavadoc

ホストのIPアドレスを特定できなかったことを示すためにスローされます。

127.0.0.1または::1または"localhost"は常にループバックインターフェイスである必要があるため、それが機能しない場合は本当に驚きます。

ネットワーク上に「ローカル」と呼ばれるサーバーが実際にある場合-DNS設定を確認するか、ホストファイルに追加します。


1
一部の実装では、ゲートウェイ/ dnsの変更を有効にするために、JVMの再起動が必要な場合があります。
アンドレ・ラズロ

68

Macでも同じ問題が発生していました。$HOSTNAMEターミナルから自分にpingを実行すると問題が見つかり、返ってきましたping: cannot resolve myHostName: Unknown host

解決する:

  1. やるecho $HOSTNAME端末に。
  2. 表示されているホスト名が何であれ(と言いますmyHostName)、pingを実行してみます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自体が見つからない場合(ネットワーク接続の理由、または構成の誤りなど)に発生するということです。
ローンの侯爵2012年

それでは、この問題をどのように修正しますか?
cokedude 2013年

2
あなたはこれを本当に解決することはできません、あなたは優雅にユーザーに通知することができるだけです。(次のようなもの-「接続を確立できません」)
Ash

学校のネットワークでこの問題が発生していて、自宅での個人的な接続ではないのはどういう意味ですか?
硝酸ナトリウム、

@sodiumnitrateあなたの学校のネットワークには、いくつかのID /パスワード認証が最初に必要です。ブラウザでWeb 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(":")セミコロンをHOSTヘッダーに使用して、HTTPヘッダーからホストを取得しました。これにより空白が残さUnknownHostExceptionれ、空白のあるホストとしてが有効なホストではなくなります。こうhost = host.trim()には、String hostあいまいな問題を解決しました。


これが私の問題でした。
Sterling Diaz

1
ありがとう-これは私を救った。私の場合、関数に渡される文字列ホストには\ nサフィックスが付いていたので、これを実行.trim()すると修正されました!
rayzinnz 2018年

1
おかげで、2つの異なるIPアドレスの間に空白スペースを入力したことに気づくまで、私は問題が何であるかを理解するために多くの時間を費やしました。
Sandoval0992

5

これはさまざまな理由で発生する可能性があります

1)VPNが接続されているかどうかを確認します。「はい」の場合、このエラーが発生することがあります

「ホスト名localhostはループバックアドレスに解決します:127.0.0.1;代わりに10.xxx.1.193を使用します(インターフェースcscotun0上)」

2)$ HOSTNAMEを確認する

3)コマンドラインで$ HOSTNAMEにpingを試行し、それが機能しない場合は、システム設定を調整してローカルホストが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


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


スペースなしでハードコードされた文字列をトリミングしても意味がありません。
ブレイクマクブライド

1

ローカルコンピュータに接続しようとしています。代わりにホスト名「localhost」を使用してみてください。または、おそらく:: /-最後はipv6です。


1

SPARK_LOCAL_IP環境変数を、接続するIPアドレス(localhost、つまり自分のIPアドレスにすることができます)に設定してみてください。例えば

$ export SPARK_LOCAL_IP=182.95.208.152

この方法では、既存のLinux設定を変更する必要はありません。私のために働いた、希望もあなたを助ける。


0

別のサービスプロバイダーとの別のwifi接続携帯電話を接続します。正確な問題はわかりませんが、特定のサービスプロバイダーのサーバーに接続できませんでしたが、他のサービスプロバイダーに接続すると機能します。ぜひお試しください!


0

私のAndroidアプリでこの問題が発生しました。リンクのフォーマットが無効なxmlファイルを取得すると、完全なURLで再フォーマットし、それが機能しました。



-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.