【问题标题】:java exec a java command with failurejava exec 一个失败的 java 命令
【发布时间】:2014-10-17 15:02:00
【问题描述】:

在 Windows 上,我尝试使用 Runtime.getRuntime().exec("java -version") 执行 java 命令(例如 java -version)。

没有错误,但该命令似乎从未执行过。或者调用了 JAVA 但什么也不做。

我将此命令放在一个 BAT 文件中并尝试执行 Runtime.getRuntime().exec("file.bat")。 我也有同样糟糕的结果。

六个月前还好。

现在有什么限制吗?仅在 Windows 上?

感谢您的帮助。

【问题讨论】:

  • 您的代码 6 个月前在 Windows 上运行过?
  • 如何判断命令“似乎永远不会执行”?你看到输出了吗?你在看什么?您可能有一个 PATH 问题,它没有找到“java”的正确路径。尝试输入 java 的完整路径,即“C:\Program Files\Java\jre7\bin\java -version”
  • 嗨!是的,它总是在之前运行。甚至在家里。但是现在一切都错了。我找到了一个解决方案,方法是使用带有同步文件的分离进程。
  • 检查输出流和错误输出流,我不确定,但我认为,版本的输出将在输出流中

标签: java runtime exec


【解决方案1】:

尝试将 -version 作为第二个字符串发送到运行时执行器。 此外,您可以记录 OutputStream 以帮助调查问题。

try {
    Process process = Runtime.getRuntime().exec(new String[]{"java", "-version"});
    try (BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()))) {
        String line;
        while((line = br.readLine()) != null){
             LOGGER.info("RuntimeProcess Printed: {}", line);
        }
    }

} catch (IOException e) {
    LOGGER.error("ERROR: {}", e);
}

最后,请注意您正在运行的命令。例如,如果您尝试在 Windows 机器上运行 Unix 命令,您将看到异常。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2019-04-28
    • 2019-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    • 2020-06-06
    相关资源
    最近更新 更多