今天在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