读取 java exec 的输出
你好,我有一些关于java的问题。 这是我的代码:
public static void main(String[] args) throws Exception {
Process pr = Runtime.getRuntime().exec("java -version");
BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
pr.waitFor();
System.out.println("ok!");
in.close();
System.exit(0);
}
在该代码中,我试图获取 java 版本命令,执行正常,但我无法读取输出,它只是返回 null。为什么?
Hello i have some question about java.
here is my code:
public static void main(String[] args) throws Exception {
Process pr = Runtime.getRuntime().exec("java -version");
BufferedReader in = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
System.out.println(line);
}
pr.waitFor();
System.out.println("ok!");
in.close();
System.exit(0);
}
in that code i'am trying to get a java version command execute is ok, but i can't read the output it just return null. Why?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
使用 getErrorStream()。
编辑:
您可以使用 ProcessBuilder (并阅读文档)
Use getErrorStream().
EDIT:
You can use ProcessBuilder (and also read the documentation)
请注意,我们正在将流程输出逐行读取到
StringBuilder
。由于try-with-resources
声明我们不需要手动关闭流。ProcessBuilder
class 让我们向其构造函数提交程序名称和参数数量。印刷:
Note that we're reading the process output line by line into our
StringBuilder
. Due to thetry-with-resources
statement we don't need to close the stream manually. TheProcessBuilder
class let's us submit the program name and the number of arguments to its constructor.Prints:
您已经拥有进程-对象(名称公关)。您可以获得输入、输出和错误流。在您的情况下,您需要 pr。 getInputStream()。从其中读取,它连接到过程的输出。
You already have the process-object (name pr). You can get the Input-, Output- and Errorstream. In your case you want pr.getInputStream(). Read from that, that is connected to the output of the process.
试试这个
try this
我也遇到了这个问题,因为我没有正确设置 $JAVA_HOME 。 (我忘记了目录/主页)。
在我编辑 $JAVA_HOME,更新 Gradle JVM,并删除 .idea 目录以使用 gradle 重新构建后,效果很好。
I also suffered this issue because I didn't set $JAVA_HOME correctly. (I forgot Contents/Home).
After I edit $JAVA_HOME, update Gradle JVM, and remove .idea directory to re-build with gradle, It works well.