是否可以获取当前登录用户的名称(Windows/Unix)和机器的主机名?
我假设它只是某些静态环境类的属性.
我找到了这个用户名
com.sun.security.auth.module.NTSystem NTSystem = new
com.sun.security.auth.module.NTSystem();
System.out.println(NTSystem.getName());
Run Code Online (Sandbox Code Playgroud)
这对于机器名称:
import java.net.InetAddress;
...
String computerName;
...
try {
computerName = InetAddress.getLocalHost().getHostName();
}
catch(Exception ex) {
...
}
Run Code Online (Sandbox Code Playgroud)
是第一个仅适用于Windows?
如果你没有设置主机名,那么第二个会做什么?
我想知道是否有办法在Java中获取计算机名称?我看过几个有特色的答案java.net.InetAddress.但是我想知道是否有一种不使用网络的方法?
(作为一个附带问题,无论如何计算机名称只是一个网络的东西,所以因此必须这样做??)
如何获取运行jvm的物理机器名?
(物理=操作系统,直到vmware ......)
从海报的评论中添加:
我的意思是运行JVM的计算机的名称.很可能是物理计算机,但如果JVM在另一个虚拟机内运行,则该名称很好.
我正在制作点对点即时消息应用程序.
目前,如果UserA.pool.net向UserB.pool.net说"hello",则用户A看到"你:你好",用户B看到"UserA.pool.net:hello".
我希望他们看到自己机器的主机名,以便用户A看到与用户B相同的文本,而不是用户A看到"你".
我们刚刚在Amazon Linux上升级到Java 8.我们正在使用Spring 4.3.8.RELEASE.过去我们可以通过在应用程序上下文文件中设置bean来获取我们的机器主机名,就像这样...
<bean id="localhostInetAddress" class="java.net.InetAddress" factory-method="getLocalHost" />
<bean id="hostname" factory-bean="localhostInetAddress" factory-method="getHostName" />
Run Code Online (Sandbox Code Playgroud)
但是对于Java 8,bean"hostname"现在包含字符串
localhost
Run Code Online (Sandbox Code Playgroud)
在Java 8之前,它曾用于包含在命令行上运行的"hostname"值,即
[myuser@machine1 ~]$ hostname
machine1.mydomain.org
Run Code Online (Sandbox Code Playgroud)
如何重新配置我们的bean,以便它获取命令行列出的主机名?我不想在任何地方硬编码.
我正在使用Java在类中构建一个简单的方法,该方法将获取用户计算机的LAN IPv4地址.在大多数情况下,这种方法很有效,但有一个例外......我得到的IP地址是我的VirtualBox以太网适配器的IPv4地址,我在进入ipconfig命令提示符时已经证明了这一点:

这是获取IP地址的方法:
import java.net.InetAddress;
import java.net.UnknownHostException;
...
private String getIP() {
try {
return InetAddress.getLocalHost().getHostAddress();
} catch (UnknownHostException e) {
return "0.0.0.0";
}
}
Run Code Online (Sandbox Code Playgroud)
有谁可以告诉我如何解决这个问题?我想避免假设最终用户不会安装VirtualBox(或类似的东西).
感谢您的时间.
java ×6
environment ×1
hostname ×1
ip-address ×1
ipv4 ×1
java-8 ×1
lan ×1
linux ×1
networking ×1
spring ×1
virtualbox ×1