1. ホーム
  2. java

[解決済み] InetAddress.getLocalHost() throws UnknownHostException

2023-04-21 05:34:15

質問

私は、(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 localhost127.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 または gedit (例) <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のコードを実行するだけです...あなたの仕事は終わりました。