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地址是什么,也就會提示這個錯誤了。

解決辦法非常的簡單:

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

 




2、,然后編輯主機配置,增加主機名的映射,輸入命令sudo vi /private/etc/hosts,進入VI編輯器,增加如下的映射

127.0.0.1  yangxiaomindeMacBook-Pro.local

退出保存即可。

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

經過了三個步驟之后,啟動Java Web項目的時候,就不會出現如下的錯誤信息。

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

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

    InetAddress.getLocalHost().getCanonicalHostName();   

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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM