InetAddress.getLocalHost()スロー UnknownHostException
-
18-09-2019 - |
質問
私は試験当社のサーバーアプリケーション(書Java)の異なる営業システムのことを考えOpenSolaris(2008.11)の少なくとも面倒によるもJava統合しました。上がっておもしろかったし、UnknownHostException
try {
computerName = InetAddress.getLocalHost().getHostName();
if (computerName.indexOf(".") > -1)
computerName = computerName.substring(0,
computerName.indexOf(".")).toUpperCase();
} catch (UnknownHostException e) {
e.printStackTrace();
}
の出力です:
java.net.UnknownHostException: desvearth01: desvearth01
at java.net.InetAddress.getLocalHost(InetAddress.java:1353)
しかし、 nslookup desvearth01
を返します正しいIPアドレス、 nslookup localhost
を返します 127.0.0.1
として期待される。また、同じコードをコンビニエンスストアでのお支FreeBSD.あなたが特にOpenSolarisことを私はよく知らない。
他のヒントに、感謝。
解決
良好な伝統できる答えを自分の質問に回してもらうことを目的として
この InetAddress.getLocalHost()
を無視し、/etc/resolv.confがするだけでなく、/etc/hostsファイルがしたことがなかったので指定したもののほかlocalhost).追加のIPおよびホスト名このファイルに問題を解決し、例外がなくなっています。
上記の回答がほぼ正しいのかヒントを上から、私の問題に取得し解決し...。
が、ここで私は、追加の手順により手順が変化するようにしてくださいほもナイーブなユーザー
手順:
オープン/etc/hostsの作品になります。
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
を追加する必要があります一線上の他のエディタのようviはmit kerberos.
<your-machine-ip> <your-machine-name> 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フレ...ーコード作業が行われます。
他のヒント
私が使用して NetworkInterface.getNetworkInterfaces()
InetAddress.getLocalHost()
<ためのフォールバックとして/> href="https://docs.oracle.com/javase/8/docs/api/java/net/UnknownHostException.html" rel="noreferrer"> UnknownHostException
の
Enumeration<NetworkInterface> iterNetwork;
Enumeration<InetAddress> iterAddress;
NetworkInterface network;
InetAddress address;
iterNetwork = NetworkInterface.getNetworkInterfaces();
while (iterNetwork.hasMoreElements())
{
network = iterNetwork.nextElement();
if (!network.isUp())
continue;
if (network.isLoopback()) // If I want loopback, I would use "localhost" or "127.0.0.1".
continue;
iterAddress = network.getInetAddresses();
while (iterAddress.hasMoreElements())
{
address = iterAddress.nextElement();
if (address.isAnyLocalAddress())
continue;
if (address.isLoopbackAddress())
continue;
if (address.isMulticastAddress())
continue;
return(address.getHostAddress());
}
}
/etc/nsswitch.conf
、NIS、DNSおよび/またはLDAPを相談する必要がある場合、それは決定言う。。:Solaris上でホスト検索は「ホストのは、内容に応じので/etc/hosts
を使用しています
あなたが唯一のホストとDNSを使用する場合は、
あなたは/etc/nsswitch.conf
でこれを持っている必要があります:
hosts: files dns
nslookup desvearth01
コマンドは直接nslookup
を参照しているため、 /etc/resolv.conf
が働く理由があります。あなたがよりよいコマンド・ライン・テストを行いたい場合は、コマンドを使用します:
getent hosts desvearth01
このエラーが現れ/ etc / hostsに、このような何かます:
127.0.0.1 localhost
127.0.1.1 MyNewName
私のアマゾンインスタンスでは、私は同じ問題を抱えていた、デフォルトのDNS設定の問題がありました。だから私はこれらの手順を行っていた問題を修正するために -
あなたのホスト名を取得します。
$hostname
ip-10-122-16-169
ホスト名へのping
$ping ip-10-122-16-169
ping: unknown host ip-10-122-16-169
猫のの/ etc / hosts のファイルは、
のようなものを取得します
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost6 localhost6.localdomain6
今、あなただけの拳行の最後に自分のホスト名を追加する必要があるので、あなたが追加したときには、
のようになります。
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ip-10-122-16-169
::1 localhost6 localhost6.localdomain6
今、あなたは再び同じホスト名をpingを確認するために、移動する準備が整いました。
$ping ip-10-122-16-169
PING localhost (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost (127.0.0.1): icmp_seq=1 ttl=255 time=0.018 ms
64 bytes from localhost (127.0.0.1): icmp_seq=2 ttl=255 time=0.024 ms
アウトのの/ etc /ホスト名の後、hostsファイルにホスト名を入れます。
ご覧になられた場合にはメッセージはあなたが必要とするよりもホスト名の設定 と hostname superhost.domain
コマンド!
その後、チェックする /etc/hosts
ファイルを含む文字列このような 127.0.0.1 localhost
.
また、このコマンド uname -a
を返しまうようになります:
Linux superhost.ドメイン 2.6.38-8-サーバー#42-Ubuntu SMP月月11日03:49:04UTC2011年x86_64x86_64x86_64GNU/Linux
ないようにす!!!!
Linux (なし) 2.6.38-8-サーバー#42-Ubuntu SMP月月11日03:49:04UTC2011年x86_64x86_64x86_64GNU/Linux
別のオプションは、(FQDN名の修正この問題にそれを変更することで...実際には、ホスト名のためにあなたの/ etc / sysconfig / networkファイルに何である)、この記事である。
のjavaはgetLocalHost()UnknownHostExceptionが/ etc / hostsファイルは異なりファイルLinuxのAPIですか
私もこの周りの問題を抱えています。私は、さらにテストを行う必要がありますが、それは次のようになります
NetworkInterface.getNetworkInterfaces()
は、より信頼性の高いことができます。私は、これは、ルックアップをしないと思いますが、ちょうどIPをつかみます。
getLocalHost()
が失敗したときに、私は「次善」としてそれを使用しています。