【发布时间】:2018-04-16 02:50:33
【问题描述】:
我找到了,我们可以使用System.getProperty("java.version") 找到Java 版本。
从这里 - Getting Java version at runtime
但我已经使用Runtime.getRuntime().exec(commands) 完成了这样的编码 -
String[] commands ={"java", "-version"};
String line;
String cmdOutput = "";
try {
Process process = Runtime.getRuntime().exec(commands);
process.waitFor();
BufferedReader input = new BufferedReader(new InputStreamReader(process.getInputStream()));
while ((line = input.readLine()) != null) {
cmdOutput += (line + "\n");
}
System.out.println("output "+cmdOutput);
input.close();
}
catch (Exception ex) {
ex.printStackTrace();
}
但是得到空白输出。
当我从命令提示符运行java -version 时,我们得到版本,我觉得它也应该返回相同的输出。
在我丢弃它并使用System.getProperty("java.version")之前,我能知道我在这里缺少什么吗?
提前致谢。
【问题讨论】:
-
你检查过错误流吗?
-
@Andrew Stubbs:感谢它使用错误流工作。但是为什么它会进入错误流?
-
不要使用
Runtime.exec来获取java 版本,除非您打算永远不将应用程序提供给其他任何人或在不同的机器上运行它。首先,JRE 可能在也可能不在PATH系统变量中。其次,即使是这样,也不能保证您的应用程序将使用与PATH中存在的 JRE 相同的 JRE 运行 -
@blgt:知道了,谢谢。