我正在使用
java.awt.Desktop.getDesktop().browse(uri);
向我的用户显示生成的html文件。如果在我打电话之前启动浏览器(firefox 3.5.7; linux),一切都很好。但是如果浏览器启动是从getDesktop()。浏览调用触发的,那么java应用程序将不会退出,直到浏览器关闭。
我该如何避免这种行为?这在windows / macOsx下是否已知?
(如果我然后强制退出java应用程序,浏览器也将关闭,有时甚至崩溃!?)
答案 0 :(得分:2)
浏览器存在的原因是因为浏览器是作为依赖进程启动的......所以当第一个进程关闭时,所有依赖进程都会被关闭。但是,在您首先启动浏览器的情况下,它已经拥有一个不受您的应用程序影响的不同进程ID。我认为避免这种行为的唯一方法是使用不同的技术(可能是Runtime.exec()?)以一种将其注册为非依赖进程的方式启动浏览器。
答案 1 :(得分:0)
项目浏览器启动器(http://browserlaunch2.sourceforge.net/)可以解决您的问题。您可以从代码中启动浏览器,如下所示:
String url = "http://....";
BrowserLauncher() launcher = new edu.stanford.ejalbert.BrowserLauncher();
launcher.openURLinBrowser(url);