您好,登錄后才能下訂單哦!
這篇文章主要介紹了java.Net.UnknownHostException異常處理問題怎么解決的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇java.Net.UnknownHostException異常處理問題怎么解決文章都會有所收獲,下面我們一起來看看吧。
同事新分的測試機resin啟動的時候出現了Java.NET.UnknownHostException異常,問題原因是在系統的 /etc/Hostname中配置了主機名,而在/etc/hosts文件中沒有相應的配置。簡單的解決辦法是對應關系配好就可以,甚至除/etc/Hostname這個文件也可以。
深層的原因: 在大多數Linux操作系統中,都是以/etc/hosts中的配置查找主機名的,但是 Detian based system用/etc/Hostname文件中的配置做主機名。
而Java 的InetAddress.java 調用 InetAddressImpl.java 的 public native String getLocalHostName() throws UnknownHostException; 來獲取本地主機名, Java 的這個方法是native的,是本地系統的一個實現,所以在本地配置出現問題的情況下,Java 代碼出現問題。
hostname 查看本機名稱,
若本機名稱不是一個IP地址, 比如是"sohu",則必須在/etc/hosts中配置 sohu對應本機IP,否則java.net.InetAddress.getLocalHost會拋出java.Net.UnknownHostException異常.
若本機名稱是一個IP地址,而且必須是本機某塊網卡的IP,
第三種情況比較麻煩。倘若本機名稱是一個IP地址,但不是本機某塊網卡的IP,或者只是某個IP地址的一部分,比如192.168(這是我遇到過的),那么執行java.net.InetAddress.getLocalHost().getHostAddress()會得到192.0.0.168,java.net.InetAddress.getLocalHost().getHostAddress()不會拋出異常,但相關訪問會停滯很久,原因是他在查找192.0.0.168這個地址, 若網絡中不存在這個地址,最終會拋出Connection timed out異常;若網絡中存在這個地址,Connection refused to host這個異常將被拋出,這些顯然都不是想要的
結論:
1. 設置本機名稱:hostname mName xxx最好不是寫IP地址的形式,若寫則必須是本機的完全IP形式(不要只寫一半)
2. 在/etc/hosts里加一行 本機IP mName
3. 用InetAddress.getLocalHost().getHostAddress()測試一下結果是否是與本機IP一致
關于“java.Net.UnknownHostException異常處理問題怎么解決”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“java.Net.UnknownHostException異常處理問題怎么解決”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。