2010-02-24 21 views
1

我使用在來自Java的瀏覽器中打開html。如果瀏覽器沒有啓動,Bug?

java.awt.Desktop.getDesktop().browse(uri); 

表明我的用戶生成的HTML文件。如果瀏覽器(firefox 3.5.7; linux)在我打電話之前啓動,那麼一切都很好。但是,如果瀏覽器啓動是由getDesktop()。browse調用觸發的,那麼Java應用程序將不會退出,直到瀏覽器關閉。

我該如何避免這種行爲?這是否也在windows/macOsx下被稱爲?

(如果我再用力Java應用程序的退出瀏覽器將關閉太和某個甚至死機!?)

回答

2

瀏覽器的存在是因爲瀏覽器的推出,相依過程的原因......所以當第一個進程關閉時,其所有依賴進程都會關閉。但是在首先啓動瀏覽器的情況下,它已經具有不受您的應用程序影響的不同進程ID。我認爲避免這種行爲的唯一方法是使用不同的技術(可能是Runtime.exec()?)以啓動瀏覽器的方式將其註冊爲非依賴進程。

+0

是的,謝謝!那就是訣竅。我現在正在使用這裏的代碼: http://www.centerkey.com/java/browser/(當然沒有後備版本到jse6,否則我會回退到jse6,如果其他調用不起作用:-)) – Karussell 2010-02-24 22:11:47

0

項目Browser Launcher(http://browserlaunch2.sourceforge.net/)可以解決您的問題。您可以從您的代碼啓動瀏覽器,如下所示:

String url = "http://...."; 
BrowserLauncher() launcher = new edu.stanford.ejalbert.BrowserLauncher(); 
launcher.openURLinBrowser(url);