java - 从java代码获取cmd命令的输出

标签 java windows cmd exec runtime.exec

我有一个程序,我能够从我的代码中成功执行 cmd 命令,但我希望能够从 cmd 命令获得输出。我该怎么做?

到目前为止我的代码是:

第二个.java:

public class Second {
    public static void main(String[] args) {
        System.out.println("Hello world from Second.java");
    }
}

和Main.java

public class Main {
    public static void main(String[] args) {
        String filename = args[1].substring(0, args[1].length() - 5);
        String cmd1 = "javac " + args[1];
        String cmd2 = "java " + filename;

        Runtime r = Runtime.getRuntime();
        Process p = r.exec(cmd1); // i can verify this by being able to see Second.class and running it successfully
        p = r.exec(cmd2); // i need to see this output to see if 

        System.out.println("Done");
    }
}

我可以通过检查 Second.class 来检查第一个命令是否成功运行,但是如果这个类产生了一些错误,我怎么才能看到那个错误呢?

最佳答案

您需要流程的 OutputStream (InputStream)(并且您应该使用 ProcessBuilder)...像这样

public static void main(String[] args) {
  String filename = args[1].substring(0, args[1].length() - 5);
  String cmd1 = "javac " + args[1];
  String cmd2 = "java " + filename;

  try {
    // Use a ProcessBuilder
    ProcessBuilder pb = new ProcessBuilder(cmd1);

    Process p = pb.start();
    InputStream is = p.getInputStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    String line = null;
    while ((line = br.readLine()) != null) {
      System.out.println(line);
    }
    int r = p.waitFor(); // Let the process finish.
    if (r == 0) { // No error
       // run cmd2.
    }
  } catch (Exception e) {
    e.printStackTrace();
  }
}

关于java - 从java代码获取cmd命令的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20803664/

相关文章:

java - 无法使用 ajax 将数组值发送到 java Controller

windows - 在软件中测试网络中断

python - 如何检测到 stdio 被重定向到 nul?

windows - 如何使用 Windows 身份验证对中间层的用户进行身份验证

batch-file - 如何批量更改子文件夹中的文件扩展名

java - 扫描仪双值 - InputMismatchException

java - 无法使用 Intent 调用其他 Activity

java - 如何用 3 个给定点计算 arcTo() 的半径?

javascript - 控制台写入速度会影响程序执行速度吗

windows - 无法在 Windows 7 64 位中正确设置 java 的路径