Java Web項目在Mac系統上啓動時提示nodename nor servname provided的解決辦法

今天在Mac系統上啓動Java Web項目的時候,提示了Java.net.UnknownHostException: yangxiaomindeMacBook-Pro.local nodename nor servname provided相似的錯誤,然而一樣的項目在windows的環境下是能夠正常啓動運行的。而後在網上找到了解決辦法,雖然是英文的,可是根聽說的作法,確實能夠解決這個問題。如今將這個問題的解決辦法分享給你們。

首先看下異常的提示信息:

[java] view plain copy
 在CODE上查看代碼片派生到個人代碼片

    java.net.UnknownHostException: yangxiaomindeMacBook-Pro.local: yangxiaomindeMacBook-Pro.local: nodename nor servname provided, or not known  
    at java.net.InetAddress.getLocalHost(InetAddress.java:1473)  
    at org.eclipse.rse.core.RSECorePlugin.getLocalMachineName(RSECorePlugin.java:265)  
    at org.eclipse.rse.core.RSEPreferencesManager.getDefaultPrivateSystemProfileName(RSEPreferencesManager.java:358)  
    at org.eclipse.rse.core.RSEPreferencesManager.initDefaults(RSEPreferencesManager.java:337)  
    at org.eclipse.rse.internal.core.RSEPreferenceInitializer.initializeDefaultPreferences(RSEPreferenceInitializer.java:23)  
    at org.eclipse.core.internal.preferences.PreferenceServiceRegistryHelper$1.run(PreferenceServiceRegistryHelper.java:300)  
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)  
    ....  
    ....  
    ....  
    Caused by: java.net.UnknownHostException: yangxiaomindeMacBook-Pro.local: nodename nor servname provided, or not known  
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)  
    at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:901)  
    at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1293)  
    at java.net.InetAddress.getLocalHost(InetAddress.java:1469)  
    ... 28 more  


關於異常信息中的yangxiaomindeMacBook-Pro.local這個東西,實際上是咱們的Mac系統的主機名稱,有些代碼裏面可能須要根據主機名稱來去本地的DNS裏找對應的IP地址,因爲本地的DNS配置中沒有指定主機名這個IP地址是什麼,也就會提示這個錯誤了。

解決辦法很是的簡單:

一、打開Mac系統上的終端,查看查看當前主機DNS的配置,輸入命令cat /private/etc/hosts,如圖所示:
java

 




二、,而後編輯主機配置,增長主機名的映射,輸入命令sudo vi /private/etc/hosts,進入VI編輯器,增長以下的映射

127.0.0.1  yangxiaomindeMacBook-Pro.local

退出保存便可。

三、最後,在終端中輸入刷新的命令dscacheutil -flushcache

通過了三個步驟以後,啓動Java Web項目的時候,就不會出現以下的錯誤信息。

之因此會出現這個錯誤,網上說是項目中有地方調用以下的代碼:

[java] view plain copy
 在CODE上查看代碼片派生到個人代碼片

    InetAddress.getLocalHost().getCanonicalHostName();   

說是這個方法會返回FQDN (Fully Qualified Domain Name),若是沒有配置主機名,那麼調用了這段代碼會拋出異常信息,而這個方法依賴於底層的操做系統,Mac系統的配置和Windows有些不一樣!node

相關文章
相關標籤/搜索