2014-03-28 204 views
3

對於一家公司(超過1000名員工),我們要檢查是否每個人都安裝了最新的Java(build 1.7.0_51-b13)。如果用戶沒有最新版本的Java,則會通知用戶更新其Java版本。哪個Java版本檢查

在腳本中可以運行「java -version」,但Java並不總是在系統變量中。要找出Java的安裝位置,腳本必須檢查用戶正在運行的是哪個Windows。這可以是XP,Windows 7或8.但我有點卡住了,因爲我認爲應該有更好更簡單的解決方案。

+1

難道Java的最新版本成爲Java 8? :p –

+1

你可以說如果路徑沒有配置,那麼Java配置不正確?您可能會在超級用戶中得到更好的答案,因爲它更多地涉及系統配置/ shell腳本/等,而不是編程。 –

+0

不是java已經通知人是否過期了嗎? – DankMemes

回答

0

它要複雜得多。 JAVA_HOME的設置可能與PATH不同,並且更糟糕的是,JRE安裝喜歡將JAVA.EXE複製到C:\Windows\System32文件夾,JDK安裝不執行此操作。所以你最終可能會從命令行運行JAVA.EXE和JAVA.EXE,每個版本都是不同的。我想在C:\Windows\System32文件夾中,你有上次啓動的JRE安裝的那些EXE文件,但它們不一定是那些只要編寫JAVA.EXE就能運行的文件。

因此,知道您已安裝最新版本是不夠的,但您需要確保使用適當的Java版本啓動您的應用程序。某些應用程序的配置文件中包含JAva版本,例如在Eclipse.ini中。

2

我可能會做的是創建一個java程序做檢查,以便路徑變量不重要。嘗試類似於

public class Checker { 
    public static void main(String[] args){ 
     String[] version = System.getProperty("java.version").split("\\."); // it's regex so we have to escape it 
     int first=Integer.parseInt(version[0]); 
     int second=Integer.parseInt(version[1]); // the property is in the form x.x.x 
     if(first==1 && second < 7){ // check for less than 1.7.x, modify this to suit your needs, I would change it to 1.8.x as soon as official java 8 is released 
      // prompt to update 
     } 
    } 
} 

然後只需將它作爲jar編譯並分發即可。這當然假設人們首先有一些版本爲的,但我假設他們是從你的問題開始的。

0

試試這個:

Regedit /e \\gaia\%USERDOMAIN%.reg HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft 

並解析文件。 Whearat gaia是您的網絡驅動器。

該文件將包含的條目是這樣的:

Windows Registry Editor Version 5.00 

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft] 
"RegDeployStatus"="0" 

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit] 
"CurrentVersion"="1.5" 

[HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Development Kit\1.5] 
"JavaHome"="C:\\Program Files\\Java\\jdk1.5.0_22\\" 
"MicroVersion"="0" 
+0

我希望你有域名DHCP來自動調用'LOGONSCR.cmd'。 –

相關問題