0

在我们的部署系统上,我们使用 Java 来获取我们正在使用的部署机器的完全限定域名。

我们正在使用以下方法: https ://docs.oracle.com/javase/8/docs/api/java/net/InetAddress.html#getCanonicalHostName--

迁移到新服务器后,我们遇到了与 systemd 相关的问题,即它无法解析域:

Caused by: java.net.UnknownHostException: *machineName*: Name or service not known

这是我们使用的旧实验室和我们的 IT 部门能想到的新实验室之间的唯一区别。

我已经在网上寻找了 2 天的任何解决方案,但找不到最佳的行动方案。

有任何想法吗?

编辑问题:

我尝试过的一些输出 -

root@myd-vm11924:~# hostname
myd-vm11924
root@myd-vm11924:~# hostname -a
hostname: Name or service not known
root@myd-vm11924:~# hostnamectl
   Static hostname: myd-vm11924
         Icon name: computer-vm
           Chassis: vm
           Boot ID: ef97951ccad04febb9856013e750e9ee
    Virtualization: vmware
  Operating System: Ubuntu 14.04.2 LTS
            Kernel: Linux 3.13.0-24-generic
      Architecture: x86_64
root@myd-vm11924:~#

TIA。

4

1 回答 1

1

首先,我会实际检查其他工具是否按预期返回主机名。特别是,旧版主机名报告工具:

hostname

以及用于此的新的 systemd 特定工具:

hostnamectl

如果这些报告了正确的答案而 Java 没有,您可以在代码中添加一个workarond 以对这些返回正确响应的工具进行系统调用。

否则,您可以向 Java 工具提供商提交错误。

于 2016-05-31T13:23:32.940 回答