Java版本检查指南

3

针对一家拥有1000+员工的公司,我们想要检查每个人是否已安装最新版本的Java(构建版本为1.7.0_51-b13)。如果用户没有安装最新版本的Java,则会通知用户更新他的Java版本。

在脚本中可以运行“java -version”,但Java并不总是在系统变量中。为了找出Java的安装位置,脚本必须检查用户正在运行哪个Windows版本。这可能是XP、Windows 7或8。但是我有点困惑,因为我认为应该有更好、更简单的解决方案。


1
最新版本的Java不是Java 8吗? :p - Kevin Workman
1
如果路径未配置,那么可以说Java没有正确配置吗?关于系统配置/ shell脚本/等问题,您可能会在Super User上得到更好的答案,而不是在编程方面。 - Tim B
Java是否已经通知人们它是否过时了? - DankMemes
此外,这应该在超级用户上发布。 - DankMemes
3个回答

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的情况下,但我从你的问题中假设他们确实拥有。


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中。


0

试试这个:

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

并解析文件。其中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"

希望你的DHCP有域名,可以自动调用LOGONSCR.cmd - Grim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接