getCanonicalHostName возвращает неполное имя - PullRequest
3 голосов
/ 31 января 2020

У меня есть несколько хостов, которые возвращают неквалифицированное имя для InetAddress.getLocalHost().getCanonicalHostName() ( Документировано здесь ), например, "foo" вместо "foo.example.com". Что может вызвать это и как я могу это исправить?

Запуск «hostname -f» в командной строке возвращает полное доменное имя, а nslookup в коротком имени также возвращает полное доменное имя.

CentOS 7.7.1908

JRE 1.8.0_231-b11

Ответы [ 2 ]

0 голосов
/ 12 февраля 2020

Вероятно, конфигурация вашей машины. Убедитесь, что DNS для домена разрешается правильно и что установлен домен.

Java будет либо искать в /etc/hosts, либо использовать средства вашей ОС для преобразования адреса в имя.

Поскольку вы ищете localhost, вам может потребоваться указание хоста. c механизм для его решения.

Также ваша машина, вероятно, имеет много интерфейсов, и не все из них могут разрешать одно и то же полное доменное имя.

Может помочь перечислить все сетевые интерфейсы, чтобы увидеть, что не так:

        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());
            }
        }
0 голосов
/ 05 февраля 2020

Вы можете вставить содержимое файла / etc / hosts?

или вывод команды cat / etc / hosts | grep localhost

Скорее всего, проблема существует, поскольку у нее нет полного доменного имени, определенного для 127.0.0.1

...