一些通过Java运行的终端命令不在Linux中显示输出

时间:2016-03-14 22:02:46

标签: java linux

我试图编写一个Java程序来运行终端命令。谷歌搜索和SO让我到这里:

n-3

到目前为止,这么好。问题是如果我尝试运行像" python -V"这样的命令。通过

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; public class Detector { public static void main(String[] args) { String[] cmd = {"ls", "-la"}; try { Process p = Runtime.getRuntime().exec(cmd); BufferedReader reader = new BufferedReader( new InputStreamReader(p.getInputStream())); String line = ""; while ((line = reader.readLine()) !=null){ System.out.println(line); } p.waitFor(); } catch (IOException | InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }

程序将运行,但实际上没有输出任何输出。有什么想法吗?

1 个答案:

答案 0 :(得分:2)

运行python -V时在命令行上看到的输出实际上正在打印到标准错误。要捕获此信息,您需要使用其他InputStream,例如:

BufferedReader errorReader = new BufferedReader(
    new InputStreamReader(p.getErrorStream()));

其余代码没问题。