Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何关闭应用程序(斯坦福:它是一个包含许多程序的文件夹。)在我打开它后在CMD中?java ProcessBuilder运行时_Java_Cmd_Processbuilder_Runtime.exec - Fatal编程技术网

如何关闭应用程序(斯坦福:它是一个包含许多程序的文件夹。)在我打开它后在CMD中?java ProcessBuilder运行时

如何关闭应用程序(斯坦福:它是一个包含许多程序的文件夹。)在我打开它后在CMD中?java ProcessBuilder运行时,java,cmd,processbuilder,runtime.exec,Java,Cmd,Processbuilder,Runtime.exec,请知道斯坦福不是exe。它是一个由许多程序组成的文件夹 我使用以下语句打开cmd.exe: public static void runStanfordCMD() throws IOException{ List<String> cmds = Arrays.asList("cmd.exe", "/C", "start", "java", "-mx4g", "-cp", "*", "edu.stanford.nlp.pipeline.StanfordCoreNLPServer"

请知道斯坦福不是exe。它是一个由许多程序组成的文件夹

我使用以下语句打开cmd.exe:

public static void runStanfordCMD() throws IOException{
    List<String> cmds = Arrays.asList("cmd.exe", "/C", "start", "java", "-mx4g", "-cp", "*", "edu.stanford.nlp.pipeline.StanfordCoreNLPServer");
    ProcessBuilder builder = new ProcessBuilder(cmds);
    builder.directory(new File("D:/Desktop/stanford-corenlp-full-2015-12-09"));
    Process proc = builder.start();
}
//如何编写语句?

如果要关闭命令提示符:

Runtime.getRuntime().exec("taskkill /IM " + "cmd.exe");
如果要关闭stanford.exe:

Runtime.getRuntime().exec("taskkill /IM " + "stanford.exe");
方法 返回的对象

进程有一个方法,可以终止正在运行的进程。
因此,您需要存储exec方法返回的Process对象,并在想要终止该进程时对其调用destroy()

您还可以调用waitFor()方法来等待进程停止(如有必要,会导致当前线程等待,直到此进程对象表示的进程终止)

为了清楚起见,请尝试以下代码(或根据您的需要进行修改):


它不起作用。因为我的申请有它的地址。无法关闭CMD可能会用应用程序名替换
CMD.exe
将立即关闭它。它工作正常。请重新测试并思考您的程序。我怀疑它是否有效,它可能会很危险,因为“cmd.exe”是多个执行进程共享的图像名称。哪一个会被杀?@LittleSanti,我更新了我的答案,第一次我认为OP想关闭CMD来解释他的句子。不,它不能关闭程序。好吧,你不应该运行CMD.exe。没有这个必要。相反,您需要直接使用exec方法运行应用程序。例如Runtime.getRuntime().exec(“myapplication.exe”).standford不是.exe,因为exec方法运行进程,所以它不需要是.exe。它可以是你的操作系统可以运行的任何东西。我认为这个解决方案应该有效,但是OP不能使用
cmd/c start
来运行他/她的程序,而只能使用
cmd/c
(因为
start
会创建另一个-不必要的-子进程)。你问,那么在我完成某个进程后如何关闭cmd.exe??但是你的头衔问题太疯狂了。您要关闭哪个程序,standford文件夹或standford文件夹下的程序?可能重复
Runtime.getRuntime().exec("taskkill /IM " + "stanford.exe");
try {
    Process p = Runtime.getRuntime().exec("java -mx4g -cp * D:/Desktop/stanford-corenlp-full-2015-12-09/edu.stanford.nlp.pipeline.StanfordCoreNLPServer");
    p.waitFor();
}
catch (IOException e) {
    e.printStackTrace();
}
catch (InterruptedException e) {
    e.printStackTrace();
}