2012-04-30 30 views
6

有什麼辦法可以用java找到os的名字嗎?有什麼辦法可以用java找到os名字?

我曾嘗試下面的代碼,但它會回報看起來像(Linux操作系統,視窗..)

System.getProperty("os.name") 

我需要檢測低於格式

Linux的 - 「Ubuntu的,的Mandriva .. 「窗口 - 」XP,VISTA ......「

對不起我的英語:-(!

有什麼想法?

+0

在你的例子中,'os。例如,名稱將返回「Windows XP」。 – assylias

+0

@assylias對不起。我是Linux用戶。我不知道Windows結果。我想要的Linux操作系統的名稱(Ubuntu的..) – sprabhakaran

+0

我是新的在這個博客。謝謝分享鏈接 – sprabhakaran

回答

11

您可以使用System.getProperty()得到以下特性:

  • os.name:操作系統名稱
  • os.arch:操作系統架構
  • os.version:操作系統版本

對您而言,我相信您正在尋找os.version屬性。 System.getProperties()javadocs包含您可以檢索的完整屬性列表。

編輯

我只是在Linux Mint的測試,這一點,它看來,獲得os.version屬性返回的內核版本,而不是發行版本:

Linux 
amd64 
2.6.38-8-generic 

找到this post後,似乎沒有可靠的方法可以找到您通過Java API運行的Linux發行版。

如果你知道你在Linux上運行,你可以運行,而不是從Java以下系統命令之一,但你必須到grep /解析出分佈:

  • cat /etc/*-release
+2

實際上,'uname -a'不包含分配名稱。 (或者至少在Fedora上,它不會)。你應該使用「/ etc/system-release」...因爲(至少在Fedora上)「/ etc/* - release」模式匹配3路徑名。 –

+0

嗯,我猜這會變得很難看,因爲在Linux Mint上,分發名稱存儲在/ etc/lsb-release中。我記得讀了一段時間以包含通配符,因爲發行版中存儲的發行版文件在發行版中不一致。也許這是值得輸出到'grep DISTRIB_DESCRIPTION'?無論哪種方式,我會編輯我的答案 - 感謝您的反饋。 –

+0

對於DISTRIB_DESCRIPTION,Greile「/ etc/* - release」在Fedora上不起作用。這些文件全部由「Fedora release 16(Verne)」組成。 –

5

這可以幫助你:

System.out.println("\nName of the OS: " + System.getProperty("os.name")); 
System.out.println("Version of the OS: " + System.getProperty("os.version")); 
System.out.println("Architecture of the OS: " + System.getProperty("os.arch")); 

編輯:這是返回Windows下:

Name of the OS: Windows XP 
Version of the OS: 5.1 
Architecture of the OS: x86 
1

您可以查詢一些系統屬性。詳情請看the tutorial。這些3的組合中的一些或全部應該可以幫到你:

System.getProperty("os.arch") 
System.getProperty("os.name") 
System.getProperty("os.version") 
相關問題