我试图让我的程序编写一个将结束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"
谢谢您的帮助。如果有任何需要澄清的信息,请询问。
最佳答案
使用r.exec( "cmd.exe /c start \"E:\\killFile.bat\"" );