質問

私は試験当社のサーバーアプリケーション(書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
私はあなたがまたのエントリの名前を変更する必要がありGlassfishの2.ワークステーション名としようとしたスタートを変更したときに

このエラーが現れ/ 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()が失敗したときに、私は「次善」としてそれを使用しています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top