0
点赞
收藏
分享

微信扫一扫

Java 使用ProcessBuilder 执行cmd、shell并显示结果

  public void start() {
    try {
      // 设置命令参数
      List<String> cmds = new ArrayList<>();
      cmds.add("java");
      cmds.add("-jar");
      cmds.add("bootdemos-0.0.1-SNAPSHOT.jar");
      ProcessBuilder processBuilder = new ProcessBuilder().command(cmds);
      // 设置工作目录这样他就会去D:\javaTool目录下找jar
      processBuilder.directory(new File("D:\\javaTool"));
      // 是否合并标准错误和标准输出
      processBuilder.redirectErrorStream(true);
      log.info("完整命令:{}", String.join(StringUtils.SPACE, processBuilder.command()));
      // 执行
      Process process = processBuilder.start();
      // 输出结果信息
      BufferedReader br1;
      br1 = new BufferedReader(new InputStreamReader(process.getInputStream(), "gbk"));
      String line1 = null;
      while ((line1 = br1.readLine()) != null) {
        System.out.println(line1);
      }
      // 关闭Process
      if (process.isAlive()) {
        process.destroy();
      }

    } catch (Exception e) {
      String msg = "启动任务失败:" + e.getMessage();
      log.error(msg, e);
    }
  }
举报

相关推荐

0 条评论