我已经编写了一个在Mac上运行的简单程序,该程序将打开一个excel文件,并等待用户关闭该文件,然后给出简单的输出。当我运行程序时,excel会打开,而proc.waitfor会被忽略,它会跳过输出而无需等待,任何帮助
谢谢

  Thread myThread = new Thread() {

        @Override
        public void run() {
            try {
                String userDir = (System.getProperty("user.home"));

                String fileName = userDir + "/Desktop/test/testfile.xlsx";
                File theFile = new File(fileName);
                Process proc = new ProcessBuilder("/usr/bin/open", fileName).start();
                int waitFor = proc.waitFor();
            } catch (InterruptedException ex) {
                Logger.getLogger(MacTester.class.getName()).log(Level.SEVERE, null, ex);
            } catch (IOException ex) {
                Logger.getLogger(MacTester.class.getName()).log(Level.SEVERE, null, ex);
            }
        }
    };

    myThread.start();
    System.out.println("excel is now closed");

最佳答案

这行:
System.out.println("excel is now closed");

应该在run方法里面。在调用start之后,主线程(正在启动其他线程的线程)将继续执行。

另一种选择是放置:
myThread.join();

上一行之后:
myThread.start();

09-04 23:37
查看更多