• 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有些不同!

  • 相关阅读:
    深入理解Java虚拟机-走进Java
    springboot服务引入外部jar包在windows运行正常,在linux环境上无法加载到引入jar包的类
    ActiveMQ数据接收类型问题
    kafka报文一直打印的问题
    Java基本语法
    flask跨域问题
    flask接口传参
    iTextSharp导出PDF模板(报告)
    ASP.NET中<%=%>、<%%>、<%@%>、<%#%>的用法与区别
    python AES+SHA1PRNG
  • 原文地址:https://www.cnblogs.com/fenglan/p/6651396.html
Copyright © 2020-2023  润新知