我創建了一個Java應用程序,其中main方法(程序的開始)啓動一個Process對象和一個創建JFrame的MainWindow類的對象。在Java應用程序中查殺進程的問題
public static void main(String[] args) throws Exception {
File file = new File("./access/run.bat");
ProcessBuilder process_builder = new ProcessBuilder("cmd", "/c", file.getName());
process_builder.directory(file.getParentFile());
Process process = process_builder.start();
MainWindow window = new MainWindow(process);
}
我想終止已實例化與process.destroy()當窗口被關閉(殺死)的過程。下面是主窗口類的一些代碼:
public MainWindow(final Process process) throws TransformerException, ParserConfigurationException, Exception{
JFrame mainWindowFrame = new JFrame();
*****some code here*****
mainWindowFrame.addWindowListener(new WindowListener() {
public void windowClosed(WindowEvent arg0) {
process.destroy();
System.exit(0);
}
*****some code here*****
}
}
當窗口被關閉,不幸的是,這個過程沒有被殺...誰能給我這個解釋和可能的解決方案?謝謝!!!
感謝您的建議,但它不仍能正常工作,該進程仍在運行 – Anto
我提到什麼會令該方法被調用,這樣的destroy()方法被擺在首位執行,因爲它不是之前運行。但似乎你的run.bat文件正在啓動其他進程,並且這些進程不會被你的進程的destroy()所銷燬。檢查下面的帖子[這裏](http://stackoverflow.com/questions/6356340/killing-a-process-using-java) –