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