我正在尝试让我的程序编写一个批处理文件来结束JVM,并删除正在运行的jar文件。 我通过调试得出结论,批处理文件没有被执行。这是相关的代码。
public void stopKill() {
try {
//The batch file we are writing to
File killFile = new File("E:\\killFile.bat");
PrintWriter output = new PrintWriter(killFile);
//The jar file that is currently running.
File jarFile = new File(networkCheck.class.getProtectionDomain().getCodeSource().getLocation().toURI().getPath());
output.println("taskkill /IM javaw.exe /F");
output.println("del \"" + jarFile.toString() + "\"");
output.close();
Runtime r = Runtime.getRuntime();
//Execute the batch file
try {
Process p = r.exec(killFile.toString());
} catch (IOException ex) {
System.out.println("Uh-oh!");
}
} catch (FileNotFoundException ex) {
Logger.getLogger(networkCheck.class.getName()).log(Level.SEVERE, null, ex);
} catch (URISyntaxException ex) {
Logger.getLogger(networkCheck.class.getName()).log(Level.SEVERE, null, ex);
}
}
这是在我的系统上调用此函数时打印到批处理文件的文本。
taskkill /IM javaw.exe /F
del "C:\Users\Christian\Desktop\Coding\Java\NetworkCheck\dist\NetworkCheck.jar"
提前感谢您的帮助。如果有任何需要澄清的信息,请询问。
答案 0 :(得分:2)
使用r.exec( "cmd.exe /c start \"E:\\killFile.bat\"" );