Arp*_*dax 2 java macos netbeans process
我编写了一个在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");
Run Code Online (Sandbox Code Playgroud)
这一行:
System.out.println("excel is now closed");
应该在run方法里面.你的主线程,启动你的另一个线程的线程继续调用start之后的执行.
另一种选择是放置:
myThread.join();
在线之后:
myThread.start();
/usr/bin/open
不以模态方式运行,它在启动适当的应用程序后返回控件.你应该用open -W
.考虑使用open -W -n
它在应用程序的新实例中打开文件.man open
在测试java代码之前,请先咨询并尝试终端.
归档时间: |
|
查看次数: |
298 次 |
最近记录: |