java.Net.UnknownHostException異常處理問(wèn)題解決
同事新分的測(cè)試機(jī)resin啟動(dòng)的時(shí)候出現(xiàn)了Java.NET.UnknownHostException異常,問(wèn)題原因是在系統(tǒng)的 /etc/Hostname中配置了主機(jī)名,而在/etc/hosts文件中沒有相應(yīng)的配置。簡(jiǎn)單的解決辦法是對(duì)應(yīng)關(guān)系配好就可以,甚至除/etc/Hostname這個(gè)文件也可以。

深層的原因: 在大多數(shù)Linux操作系統(tǒng)中,都是以/etc/hosts中的配置查找主機(jī)名的,但是 Detian based system用/etc/Hostname文件中的配置做主機(jī)名。
而Java 的InetAddress.java 調(diào)用 InetAddressImpl.java 的 public native String getLocalHostName() throws UnknownHostException; 來(lái)獲取本地主機(jī)名, Java 的這個(gè)方法是native的,是本地系統(tǒng)的一個(gè)實(shí)現(xiàn),所以在本地配置出現(xiàn)問(wèn)題的情況下,Java 代碼出現(xiàn)問(wèn)題。
hostname 查看本機(jī)名稱,
- 若本機(jī)名稱不是一個(gè)IP地址, 比如是"sohu",則必須在/etc/hosts中配置 sohu對(duì)應(yīng)本機(jī)IP,否則java.net.InetAddress.getLocalHost會(huì)拋出java.Net.UnknownHostException異常.
- 若本機(jī)名稱是一個(gè)IP地址,而且必須是本機(jī)某塊網(wǎng)卡的IP,
- 第三種情況比較麻煩。倘若本機(jī)名稱是一個(gè)IP地址,但不是本機(jī)某塊網(wǎng)卡的IP,或者只是某個(gè)IP地址的一部分,比如192.168(這是我遇到過(guò)的),那么執(zhí)行java.net.InetAddress.getLocalHost().getHostAddress()會(huì)得到192.0.0.168,java.net.InetAddress.getLocalHost().getHostAddress()不會(huì)拋出異常,但相關(guān)訪問(wèn)會(huì)停滯很久,原因是他在查找192.0.0.168這個(gè)地址, 若網(wǎng)絡(luò)中不存在這個(gè)地址,最終會(huì)拋出Connection timed out異常;若網(wǎng)絡(luò)中存在這個(gè)地址,Connection refused to host這個(gè)異常將被拋出,這些顯然都不是想要的
結(jié)論:
1. 設(shè)置本機(jī)名稱:hostname mName xxx最好不是寫IP地址的形式,若寫則必須是本機(jī)的完全I(xiàn)P形式(不要只寫一半)
2. 在/etc/hosts里加一行 本機(jī)IP mName
3. 用InetAddress.getLocalHost().getHostAddress()測(cè)試一下結(jié)果是否是與本機(jī)IP一致
到此這篇關(guān)于java.Net.UnknownHostException異常處理方法的文章就介紹到這了,更多相關(guān)java.Net.UnknownHostException異常處理內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在webservice里調(diào)用耗時(shí)方法出錯(cuò)的解決方案
這篇文章主要介紹了在webservice里調(diào)用耗時(shí)方法出錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
java利用url實(shí)現(xiàn)網(wǎng)頁(yè)內(nèi)容的抓取
本文主要介紹了java利用url實(shí)現(xiàn)網(wǎng)頁(yè)內(nèi)容抓取的示例。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧2017-03-03
Java中的Semaphore計(jì)數(shù)信號(hào)量詳細(xì)解析
這篇文章主要介紹了Java中的Semaphore計(jì)數(shù)信號(hào)量詳細(xì)解析,Semaphore?是一個(gè)計(jì)數(shù)信號(hào)量,必須由獲取它的線程釋放,常用于限制可以訪問(wèn)某些資源的線程數(shù)量,例如通過(guò)?Semaphore?限流,需要的朋友可以參考下2023-11-11

