我需要知道当前计算机的名称。
最简单的方法是运行:
java.net.InetAddress.getLocalHost().getHostName()
在Linux机器上使用OpenJDK 7,结果是正确的,如系统命令hostname
所报告的那样。
但是使用OpenJDK 8,返回的名称是localhost
,这是无用的。
为什么不同的行为? 如何使用Java 8获得真实姓名?
相关问题:
答案 0 :(得分:0)
尝试使用getCanonicalHostName()
而不是getHostName()
!
答案 1 :(得分:-1)
我的/etc/hosts
文件是这样的:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 myserver
然后:
InetAddress.getLocalHost().getHostName().equals("localhost")
如果我将其更改为:
127.0.0.1 myserver localhost localhost.localdomain localhost4 localhost4.localdomain4
然后:
InetAddress.getLocalHost().getHostName().equals("myserver")
Java 8对排序比对Java 7更敏感,后者总是返回正确的结果。
更新:进一步调查显示,使用CentOS 6时,这就是行为:Java 8依赖于排序。在CentOS 7中,Java 8的工作方式与Java 7类似。