Destroy不能在java中工作



我创建了一个简单的java程序来打开excel文件并向其中写入数据,一旦写入数据,我就继续打开该文件以查看电子表格:

String[] cmdarray=new String[]{"cmd.exe","/c","C:\Users\Jason\Documents\*******\********\******.xls"}; 
            Runtime runTime = Runtime.getRuntime();
            Process process = runTime.exec(cmdarray);

作为学习曲线的一部分,然后我尝试在10秒后使用:

关闭文件
process.destroy();

但这不是关窗户。谁能指出我错在哪里吗?谢谢你。

private static void OpenExcel() throws IOException {
            //Find the File and open it
            String[] cmdarray=new String[]{"cmd.exe","/c","C:\Users\Jason\Documents\*********\*********\********.xls"}; 
            Runtime runTime = Runtime.getRuntime();
            Process process = runTime.exec(cmdarray);
            try{    
            //Delay
             TimeUnit.SECONDS.sleep(10);
        }catch (InterruptedException e) {
                e.printStackTrace();
                //Handle exception
            }
            //Close Excel
            System.out.println("Closing Excel");
            process.destroy();
            }
 }

原因之一可能是众所周知的JDK错误:

这里的根本问题是,与Unix不同,Windows做到了这一点维护进程之间的父子关系。一个过程可以杀死它自己的直系后代,但除非你制造其他安排获得情报,不能杀任何人'孙子',因为它没有办法找到他们。

你可以尝试直接执行Excel,而不是通过cmd:

Runtime.getRuntime().exec("C:\full\path\to\excel.exe C:\file.xls");

最新更新