如何关闭应用程序(斯坦福:它是一个包含许多程序的文件夹。)在我打开它后在CMD中?java ProcessBuilder运行时
请知道斯坦福不是exe。它是一个由许多程序组成的文件夹 我使用以下语句打开cmd.exe:如何关闭应用程序(斯坦福:它是一个包含许多程序的文件夹。)在我打开它后在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"
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();
}