2009-07-08 2 views
26

jvmが実行されている物理マシン名を取得するにはどうすればよいですか?Javaで物理マシン名を見つける

(物理= OSは、VMwareまで...)

+0

どのプラットフォームですか? OS固有のものであれば問題ありませんか? – Gandalf

+0

あなたはFQDNを意味しますか? – kmarsh

+0

ベストはもちろん、プラットフォームに依存しません。 – ripper234

答えて

52
String computername=InetAddress.getLocalHost().getHostName(); 
System.out.println(computername); 
+5

これはDNSに依存し、失敗することに注意してください:http://stackoverflow.com/questions/7883542/getting-the-computer-name-in-java – Vadzim

+1

質問の表現方法:「物理マシン名を取得する」、これは*正解ではありません。厳密に言えば、上記のことは、ホストの**ネットワーク名**、通常はlocalhostインターフェースの名前です。 http://stackoverflow.com/a/40702767/1504556を参照してください。 Javaには、ローカルマシンの "マシン名"または "コンピュータ名"を取得するための(標準化された)方法はありません。 – peterh

+0

は完全に@ヴァジムと合意した。 DHCPによって割り当てられたIPアドレスをDNSまたはダイナミックDNSにマッピングしないと、返されるコンピュータ名は実際のコンピュータ名と大きく異なる場合があります。 – someone

1

私はあなたが物理マシン名によって何を意味するか正確にはわかりません。あなたのコメント "(Physical = OS、vmwareまで)"は私に説明する必要があります。

しかし、あなたは鍵がここで見つける鍵の一つであるはSystem.getProperty(文字列のキー)を使用することができます:OSの名前を教えてくれなければならないhttp://java.sun.com/j2se/1.5.0/docs/api/java/lang/System.html#getProperties()

。ホスト名が必要な場合は、jsightのアドバイスを使用してください。私はあなたが何をしたいかわからないので、

+0

つまり、JVMが実行されているコンピュータの名前です。 ほとんどの場合物理コンピュータですが、JVMが別の仮想マシン内で実行されている場合は、その名前が有効です。 – ripper234

11

カップルオプション、:Windowsでは

RuntimeMXBean rmx = ManagementFactory.getRunTimeMXBean(); 
System.out.println(rmx.getName()); 

それとも...

System.out.println(InetAddress.getLocalHost().getHostName()); 

またはLinux

Runtime r = Runtime.getRuntime(); 
Process p = r.exec("uname -a"); 
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()); 
System.out.println(r.readLine()); 
+0

getRunTimeMXBean()が100%信頼できないという印象を受けました – Hector

+0

"uname -n"は正確な作業を行います。 –

9

、あなたの場合ワークステーション名が必要な場合は、

System.getenv("COMPUTERNAME") 
関連する問題