【发布时间】:2020-10-06 19:17:39
【问题描述】:
当前正在尝试以编程方式执行 .jar 文件。但是为了测试 java,我尝试运行以下命令:
val p = ProcessBuilder("cmd.exe", "/c", "java", "-version").start()
val results: List<String> = p.inputStream.bufferedReader().readLines()
assertThat("Results should contain java version: ", results, hasItem(containsString("java version")))
但是,似乎没有任何输出。
我可以成功运行:
val pb = ProcessBuilder("cmd.exe", "/c", "echo", "hello world")
我尝试添加一个 java 可执行文件所在的工作目录,但没有任何反应。
我对如何使这项工作没有任何想法。如果我运行 cmd 并输入 java -version 我会得到版本信息。
我还能做些什么来让它发挥作用?
【问题讨论】:
-
如果你离开
/c? -
你试过直接运行
java吗? (我不了解 Windows,但 this question 似乎建议你不需要cmd.exe如果你正在运行一个不是内置的命令。) -
@jmizv 我已经尝试删除
/c,但是这个过程最终只是挂起。不知道之后如何结束。 @gidds 我应该把它放在我的描述中,但我确实尝试运行:val pb = ProcessBuilder("java", "-version")当我运行它时,输出中什么也没有出现 -
可能与
java -version输出在stderr 中,而不是stdout 中有关 -
是的,我还会检查 StdErr 中是否有东西。
标签: java windows kotlin processbuilder