哪个Java版本检查

时间:2014-03-28 13:25:42

标签: java cmd

对于一家公司(1000多名员工),我们想检查每个人是否安装了最新的Java(build 1.7.0_51-b13)。如果用户没有最新版本的Java,则会通知用户更新其Java版本。

在脚本中可以运行" java -version",但Java并不总是在系统变量中。要找出安装Java的位置,脚本必须检查用户正在运行的Windows。这可能是XP,Windows 7或8.但我有点卡住,因为我认为应该有一个更好更容易的解决方案。

3 个答案:

答案 0 :(得分: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并分发它。这当然是假设人们首先拥有某些版本的 java,但我假设他们从你的问题中做到了。

答案 1 :(得分:0)

它要复杂得多。 JAVA_HOME的设置可能与PATH不同,更糟糕的是,JRE安装喜欢将JAVA.EXE复制到C:\Windows\System32文件夹,JDK安装不会这样做。因此,您最终可能会从命令行运行JAVAC.EXE和JAVA.EXE,每个版本都来自不同的版本。我想在C:\Windows\System32文件夹中你有上次启动的JRE安装中的那些EXE文件,但是如果你只是编写JAVA.EXE,它们不一定会运行。

因此,知道您安装了最新版本是不够的,但您需要确保使用正确的Java版本启动应用程序。某些应用程序在其配置文件中具有JAva版本,例如在Eclipse.ini中。

答案 2 :(得分: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"