Java 8中的InetAddress无法获取主机名

4

InetAddress.getLocalHost().getHostName()在我切换到Java 8后不再获取主机名...

使用jdk1.8时,InetAddress.getLocalHost().getHostName()返回"localhost"。以前(当我使用jdk1.6时)它会根据网络配置给我正确的主机名(即"ACTION03"):

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

需要帮助吗?


hostname 命令会给你什么信息? - Robert
@Robert,它给了我ACTION03。 - Mohamed Taboubi
在编辑之前,您的主机文件中有两个localhost条目。不确定是否与此有关。也许没有一对一的映射,它会给出localhost?需要测试一下。不确定正确的行为,但对我来说它可以正常工作。 - ManoDestra
“/etc/hosts” 文件的内容是什么? - OneCricketeer
2个回答

2

JDK中发现了类似的错误

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

他们尊重/etc/nsswitch.conf中的配置,其中主机被配置为/etc/hosts,这使得它在名称解析方面具有主要优先级。

通常,/etc/hosts中有一个记录127.0.0.1 localhost,为主机提供了localhost的名称。


你让我开心极了! - mulya

1

在我的Linux(Ubuntu 14.04)上,使用Java 1.8.0_05可以正常工作。

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 habanero

我使用Centos 7!它给了我本地主机! - Mohamed Taboubi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接