【问题标题】:InetAddress java 8 is not getting the hostnameInetAddress java 8 没有获取主机名
【发布时间】:2016-12-02 00:50:26
【问题描述】:

InetAddress.getLocalHost().getHostName() 不再获得 HostName 的名称,因为我切换到 java 8 ...

使用 jdk1.8,InetAddress.getLocalHost().getHostName() 返回“localhost”。之前(当我使用 jdk1.6 时)它根据网络配置为我提供了正确的主机名(即“ACTION03”):

cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=ACTION03

有什么帮助吗?

【问题讨论】:

  • hostname 带给你什么?
  • @Robert 它给了我 ACTION03
  • 在编辑之前,您的主机文件中有 localhost 的两个主机条目。不确定这是否与它有关。也许没有一对一的映射,它给了本地主机?需要对其进行测试。不确定正确的行为,但它对我有用。
  • /etc/hosts文件的内容是什么?

标签: java java-8 inetaddress rt.jar


【解决方案1】:

在带有 Java 1.8.0_05 的 Linux (Ubuntu 14.04) 上为我工作。

public class HostName {
    public static void main(String[] args) throws Exception {
        System.out.println(java.net.InetAddress.getLocalHost().getHostName());
    }
}

robert@habanero:~$ javac HostName.java && java HostName

哈瓦那人

【讨论】:

  • 我我有 Centos 7 !它给了我本地主机!
【解决方案2】:

在 JDK 中触发了 similar bug

我的理解是他们改变了默认的解决过程。

他们尊重/etc/nsswitch.conf 中的配置,其中为/etc/hosts 配置了主机,这为其名称解析提供了主要优先级。

通常/etc/hosts127.0.0.1 localhost 的记录,为主机localhost 提供名称

【讨论】:

  • 你成就了我的一天!
猜你喜欢
  • 2016-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-03
  • 1970-01-01
  • 2017-11-11
  • 2014-05-18
相关资源
最近更新 更多