java.Net.UnknownHostException異常處理問題解決
同事新分的測試機(jī)resin啟動(dòng)的時(shí)候出現(xiàn)了Java.NET.UnknownHostException異常,問題原因是在系統(tǒng)的 /etc/Hostname中配置了主機(jī)名,而在/etc/hosts文件中沒有相應(yīng)的配置。簡單的解決辦法是對應(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; 來獲取本地主機(jī)名, Java 的這個(gè)方法是native的,是本地系統(tǒng)的一個(gè)實(shí)現(xiàn),所以在本地配置出現(xiàn)問題的情況下,Java 代碼出現(xiàn)問題。
hostname 查看本機(jī)名稱,
- 若本機(jī)名稱不是一個(gè)IP地址, 比如是"sohu",則必須在/etc/hosts中配置 sohu對應(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(這是我遇到過的),那么執(zhí)行java.net.InetAddress.getLocalHost().getHostAddress()會(huì)得到192.0.0.168,java.net.InetAddress.getLocalHost().getHostAddress()不會(huì)拋出異常,但相關(guā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()測試一下結(jié)果是否是與本機(jī)IP一致
到此這篇關(guān)于java.Net.UnknownHostException異常處理方法的文章就介紹到這了,更多相關(guān)java.Net.UnknownHostException異常處理內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Security中的WebSecurityConfigurerAdapter詳解
這篇文章主要介紹了Security中的WebSecurityConfigurerAdapter詳解,今天我們要進(jìn)一步的的學(xué)習(xí)如何自定義配置Spring?Security,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07關(guān)于Idea使用git時(shí)commit特別慢的問題及解決方法
這篇文章主要介紹了關(guān)于Idea使用git時(shí)commit特別慢的問題及解決方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10JVM教程之Java代碼編譯和執(zhí)行的整個(gè)過程(二)
這篇文章主要介紹了JVM學(xué)習(xí)筆記第二篇,關(guān)于Java代碼編譯和執(zhí)行的整個(gè)過程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03Jenkins一鍵打包部署SpringBoot應(yīng)用
本文主要介紹了Jenkins一鍵打包部署SpringBoot應(yīng)用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-01-01基于Protobuf動(dòng)態(tài)解析在Java中的應(yīng)用 包含例子程序
下面小編就為大家?guī)硪黄赑rotobuf動(dòng)態(tài)解析在Java中的應(yīng)用 包含例子程序。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-07-07