如何验证“java -version”不会通过代码返回错误?

时间:2018-02-18 09:23:48

标签: java install4j

在我们的组织中,我们提供安装程序(Install4j)来构建和运行我们的产品。

在其中一个阶段,我们使用System.getProperty("java.version")对java版本进行验证。在极少数情况下,从命令提示符输入java -version时,它可能会出现各种错误,例如:

enter image description here

我遇到的问题是这些错误只会从命令提示符显示,而System.getProperty("java.version")不会提醒任何错误,只返回版本号。

我正在寻找监控这类错误的方法并相应地停止安装程序,但我的所有尝试都是徒劳的。

修改

我想过使用Runtime.getRuntime().exec(),但是'java -version'响应不会回来。

2 个答案:

答案 0 :(得分:2)

使用“运行可执行文件或批处理文件”操作,将“可执行文件”属性设置为

${installer:sys.javaHome}/bin/java.exe

“Arguments”属性

-version

和“重定向stderr”属性为“To installer variable”,子属性“Installer variable name”设置为

javaVersionOutput

操作运行后,您可以使用“运行脚本”属性来检查输出:

String output = context.getVariable("javaVersionOutput");
// TODO check output

答案 1 :(得分:0)

使用以下代码处理错误并获取警告消息:

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");
}