Java 在继续编码之前,等待终端结果

Java 在继续编码之前,等待终端结果,java,servlets,terminal,Java,Servlets,Terminal,我正在向Servlet发送请求。在这个Servlet中,我有一个代码,它执行终端并在那里运行一些命令。我希望我的代码在响应我的请求之前等待终端进程。我怎么办 下面您可以看到我的代码: Process send = Runtime.getRuntime().exec(new String[] {"sh", "-c", fileNameShort + ".jar /tmp/"+ fileNameShort +".class; /home/ubuntu/android-x86.rund.sh -cp

我正在向Servlet发送请求。在这个Servlet中,我有一个代码,它执行终端并在那里运行一些命令。我希望我的代码在响应我的请求之前等待终端进程。我怎么办

下面您可以看到我的代码:

Process send = Runtime.getRuntime().exec(new String[] {"sh", "-c", fileNameShort + ".jar /tmp/"+ fileNameShort +".class; /home/ubuntu/android-x86.rund.sh -cp /tmp/"+ fileNameShort +".jar " + fileNameShort}); 
您可以使用:

  • 方法is
    waitFor()
    允许您等待流程完成
  • ErrorStream
    InoutStream
    分别允许获取执行的输出和错误
  • exitValue
    表示流程的完成方式。exitValue 0用于正常完成

  • 您必须从流程中获取
    OutputStream
    ErrorStream
    。任何写入正常标准输出的内容都会进入OutputStream,任何写入标准输出的内容都会进入ErrorStream。有关更多信息,请参阅进程上的JavaDoc:您是否知道
    Process send=Runtime.getRuntime().exec(新字符串[]{“sh”,“c”,“fileNameShort+”.jar/tmp/“+fileNameShort+”.class;/home/ubuntu/android-x86.rund.sh-cp/tmp/“+fileNameShort+”.jar“+fileNameShort})将在服务器端执行terminal@JqueryLearner是,它在服务器端终端中执行。我希望服务器响应等待该进程;这一行显示了一个错误-多个标记-未处理的异常类型InterruptedException-行断点:UploadImage[line:258]-doPost(HttpServletRequest,HttpServletResponse)我希望您知道如何处理它。。用谷歌搜索你的异常,你会发现的。
    
    System.out.println("Waiting for process...");
    send.waitFor();
    
    Process process = Runtime.getRuntime().exec("tasklist");
    BufferedReader reader = 
        new BufferedReader(new InputStreamReader(process.getInputStream()));
    BufferedReader reader = 
        new BufferedReader(new InputStreamReader(process.getErrorStream()));
    System.out.println("Waiting for process completion..");
    int exitValue = process.waitFor();
    System.out.println("Process is done..");