对于一家公司(1000多名员工),我们想检查每个人是否安装了最新的Java(build 1.7.0_51-b13)。如果用户没有最新版本的Java,则会通知用户更新其Java版本。
在脚本中可以运行" java -version",但Java并不总是在系统变量中。要找出安装Java的位置,脚本必须检查用户正在运行的Windows。这可能是XP,Windows 7或8.但我有点卡住,因为我认为应该有一个更好更容易的解决方案。
答案 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"