有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java getCanonicalHostName正在返回非限定名称

我有几个主机返回了InetAddress.getLocalHost().getCanonicalHostName()Documented here)的非限定名称 e、 用“foo”代替“foo.example.com”。 是什么原因造成的?我如何修复

在命令行上运行“hostname -f”将返回FQDN 短名称上的nslookup也返回FQDN

CentOS 7.7.1908

JRE 1.8.0_231-b11


共 (2) 个答案

  1. # 1 楼答案

    你能粘贴/etc/hosts文件的内容吗

    或cat/etc/hosts | grep localhost的输出

    问题很可能存在,因为它没有为127.0.0.1定义FQDN

  2. # 2 楼答案

    这可能是您的机器的配置。检查域的DNS是否正确解析,以及是否存在域集

    Java要么在/etc/hosts中查找,要么使用操作系统工具进行名称-地址-名称解析

    因为您正在寻找localhost,所以可能需要一种特定于主机的机制来解决它

    此外,您的机器可能有许多接口,并且并非所有接口都可以解析为相同的FQDN

    列举所有网络接口可能有助于发现问题:

            final Enumeration<NetworkInterface> networkInterfaces = NetworkInterface.getNetworkInterfaces();
            while(networkInterfaces.hasMoreElements())
            {
                final NetworkInterface iface = networkInterfaces.nextElement();
                System.out.println("Interface: " + iface.getDisplayName());
                final Enumeration<InetAddress> inetAddresses = iface.getInetAddresses();
                while (inetAddresses.hasMoreElements())
                {
                    final InetAddress addr = inetAddresses.nextElement();
                    System.out.println(addr.getCanonicalHostName());
                }
            }