如何验证这一点;java版本;不';t通过代码返回错误?

如何验证这一点;java版本;不';t通过代码返回错误?,java,install4j,Java,Install4j,在我们的组织中,我们提供一个安装程序(Install4j)来构建和运行我们的产品 在其中一个阶段中,我们使用System.getProperty(“java.version”)对java版本进行验证。在一些罕见的情况下,在命令提示符下键入java-version时,可能会出现各种错误,如: 我面临的问题是,这些类型的错误仅从命令提示符显示,而System.getProperty(“java.version”)不会发出任何警报,只返回版本号 我正在寻找一种方法来监控此类错误并相应地停止安装程序,

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

在其中一个阶段中,我们使用
System.getProperty(“java.version”)
对java版本进行验证。在一些罕见的情况下,在命令提示符下键入
java-version
时,可能会出现各种错误,如:

我面临的问题是,这些类型的错误仅从命令提示符显示,而
System.getProperty(“java.version”)
不会发出任何警报,只返回版本号

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

编辑


我想使用
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");
}
使用“运行可执行文件或批处理文件”操作,将“可执行文件”属性设置为

${installer:sys.javaHome}/bin/java.exe
-version
要删除的“Arguments”属性

${installer:sys.javaHome}/bin/java.exe
-version
将“Redirect stderr”属性设置为“to installer variable”,子属性“installer variable name”设置为

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

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

这个解决方案不好。在我包含的示例错误中,版本号确实返回,但我仍然错过了一个错误…您的屏幕截图显示Java安装已损坏,在这种情况下,您必须重新安装Java。是的,我知道。但在这种情况下,我的目的是向客户展示一个适当的信息。我需要知道在安装程序中何时发生这种错误。安装程序中不会以同样的方式发生这种错误。您是否捆绑了JRE?那么这个错误就不会发生了。如果没有,install4j生成的本机可执行文件中的搜索序列将负责查找工作JRE。@ingoKegel-是否有任何方法使用“运行可执行文件或批处理文件”操作运行命令java-version?是的,您可以这样做并解析输出。不过,我不确定这对安装程序有何帮助,因为如果它已经在运行,那么JRE安装中断不会有任何问题。