2012-06-28 18 views
2

我們的軟件有一個擺動面板,用於列出jdk安裝路徑。例如,如果有安裝在用戶的PC 4 JDK和JDK路徑在面板中列出:如何知道用戶在擺動面板中選擇的JDK位版本

  1. C:\爪哇\ jdk1.5.0_19 \ BIN \的java.exe

  2. d :\ SOFTWARE \的Java6 \ jdk1.6.0_31 \斌\ java.exe的

  3. d:\ SOFTWARE \的Java6 \ jdk1.6.0_31_64 \ BIN \ java.exe的

  4. d:\ installedapp \ jdk1。 7.0_03 \ bin \ java.exe

用戶需要選擇一個jdk安裝路徑來安裝我們的軟件。我們想知道用戶選擇的jdk的位版本(32位或64位),我們該怎麼做?

+0

你有什麼試過?你至少需要給我們面板的代碼 - 你的路徑存儲在哪個組件中? Jlabel之下? –

+0

你可以模擬這種情況,我給出一個jdk安裝路徑(2.D:\ software \ Java6 \ jdk1.6.0_31 \ bin \ java.exe或3.D:\ software \ Java6 \ jdk1.6.0_31_64 \ bin \ java.exe)給你,你怎麼知道jdk是32bit或64bit? – Jemyxu

+0

是的......但它們如何放置在面板上? JLabels,JButtons,AWT類還是什麼? –

回答

3

好吧,如果你知道位置,你可以運行「bin/java.exe -version」上的Runtime.exec()並以這種方式捕獲該版本。這至少是一種蠻橫的方式。

示例輸出:

java version "1.6.0_32" 
Java(TM) SE Runtime Environment (build 1.6.0_32-b05) 
Java HotSpot(TM) 64-Bit Server VM (build 20.7-b02, mixed mode) 
+0

謝謝,我試過了,但它什麼都沒輸出。字符串j6 =「D:/software/Java6/jdk1.6.0_31_64/bin/java.exe -version」; \t \t Process process = Runtime.getRuntime()。exec(j6); \t \t InputStream in = process。的getInputStream(); \t \t BufferedReader br = new BufferedReader(new InputStreamReader(in)); \t \t String str = null; ((str = br.readLine())!= null){ \t \t \t \t System.out.println(str); \t \t} \t \t br.close(); – Jemyxu

+2

我終於找到了解決方案,「java -version」寫入錯誤流,而不是輸出流。因此,我應該使用getErrorStream()而不是getInputStream()。我們可以參考下面的鏈接。 [Runtime getRuntime()exec(command)]的問題](http://www.coderanch.com/t/385943/java/java/Runtime-getRuntime-exec-command)。非常感謝,特別是Matt,Kevin。 – Jemyxu

+1

此外:如果JDK版本是32位,則代替64位服務器虛擬機,客戶端虛擬機將顯示在第3行。 – RAS

-1

您可以閱讀目前正使用的 「java.version」 財產執行的Java版本:

您也可以讀取架構(例如86 VS AMD64),OS和JRE回家。

+0

恐怕使用「java.version」屬性只能顯示默認的jdk,而不是用戶選擇的jdk,您在系統路徑中設置了jdk5,但是在面板中選擇了jdk7,然後是System.getProperty(「java。版本「)是jdk的版本,並且版本不是位版本。 – Jemyxu

+0

或'java.specification.version'給出主要版本,例如1.6或1.7 – vikingsteve

相關問題