如何通过代码验证 "java -version" 没有 returns 错误?
How to validate that "java -version" doesn't returns an error through the code?
在我们的组织中,我们提供安装程序 (Install4j) 来构建和 运行 我们的产品。
在其中一个阶段,我们使用 System.getProperty("java.version")
对 java 版本进行了验证。在极少数情况下,在命令提示符下键入 java -version
时,可能会出现各种错误,例如:
我面临的问题是此类错误仅在命令提示符下显示,而 System.getProperty("java.version")
不会发出任何警报,只是 return 版本号。
我正在寻找一种方法来监控此类错误并相应地停止安装程序,但我所有的尝试都是徒劳的。
编辑:
我想使用 Runtime.getRuntime().exec()
,但是 'java -version' 响应不会返回。
使用以下代码处理错误并获取警报消息:
String javaVersion = System.getProperty("java.version");
if(!javaVersion.contains("1.7")) {
System.out.println("jdk 1.7 is required.");
System.out.println("Please install jdk 1.7");
}
使用 "Run executable or batch file" 操作,将 "Executable" 属性 设置为
${installer:sys.javaHome}/bin/java.exe
"Arguments" 属性 到
-version
和 "Redirect stderr" 属性 到 "To installer variable" 以及 child 属性 "Installer variable name" 设置为
javaVersionOutput
动作有运行后,可以用"Run script"属性检查输出:
String output = context.getVariable("javaVersionOutput");
// TODO check output
在我们的组织中,我们提供安装程序 (Install4j) 来构建和 运行 我们的产品。
在其中一个阶段,我们使用 System.getProperty("java.version")
对 java 版本进行了验证。在极少数情况下,在命令提示符下键入 java -version
时,可能会出现各种错误,例如:
我面临的问题是此类错误仅在命令提示符下显示,而 System.getProperty("java.version")
不会发出任何警报,只是 return 版本号。
我正在寻找一种方法来监控此类错误并相应地停止安装程序,但我所有的尝试都是徒劳的。
编辑:
我想使用 Runtime.getRuntime().exec()
,但是 'java -version' 响应不会返回。
使用以下代码处理错误并获取警报消息:
String javaVersion = System.getProperty("java.version");
if(!javaVersion.contains("1.7")) {
System.out.println("jdk 1.7 is required.");
System.out.println("Please install jdk 1.7");
}
使用 "Run executable or batch file" 操作,将 "Executable" 属性 设置为
${installer:sys.javaHome}/bin/java.exe
"Arguments" 属性 到
-version
和 "Redirect stderr" 属性 到 "To installer variable" 以及 child 属性 "Installer variable name" 设置为
javaVersionOutput
动作有运行后,可以用"Run script"属性检查输出:
String output = context.getVariable("javaVersionOutput");
// TODO check output