Java代码中如何打开java.exe并输出参数(-version)获取结果

养-乐多 2017-02-08 03:23:43
Java代码中如何打开java.exe并输出参数(-version)获取结果?
我知道Java提供了Runtime去打开一个文件、程序,但是我现在想执行java.exe -version并获取结果如何做到呢?
我试过下面的代码没有任何结果,请问我如何做呢?

// CMD 执行命令
String cmd = "cmd /c java.exe -version";
try {
// 执行 CMD 命令
Process process = Runtime.getRuntime().exec(cmd);
// 从输入流中读取文本
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream(), "GBK"));
// 循环读取
String line = null;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (Exception e) {
e.printStackTrace();
}

按理说java.exe也是一个程序,给他一个参数是可以得到结果的。
...全文
372 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
moguobiao 2017-02-09
  • 打赏
  • 举报
回复
命令的结果可能输出到 InputStream,也可能到ErrorStream。 两个Stream都试一下。
养-乐多 2017-02-08
  • 打赏
  • 举报
回复
引用 1 楼 moguobiao 的回复:
把getInputStream改成getErrorStream 也可以用System.getProperty("java.version");
而且还奇怪的是,在cmd中执行的命令结果与java代码中的结果不一样,比如cmd中输入Android的ADB命令的是 C:\Users\Xanthium>adb.exe devices List of devices attached emulator-5568 host 而java代码中什么都没有。
养-乐多 2017-02-08
  • 打赏
  • 举报
回复
引用 1 楼 moguobiao 的回复:
把getInputStream改成getErrorStream 也可以用System.getProperty("java.version");
感谢啊,出来了结果。但是看API的注释是这样的: 方法得到的子进程的错误流。流管道从错误输出流由该Process对象表示的过程中获取数据。 我很奇怪为什么要用这个方法来获取输出结果呢,不太理解。
moguobiao 2017-02-08
  • 打赏
  • 举报
回复
把getInputStream改成getErrorStream 也可以用System.getProperty("java.version");

51,397

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧