【问题标题】:Open html in browser from Java. Bug if browser is not started?从 Java 在浏览器中打开 html。浏览器未启动时的错误?
【发布时间】:2010-02-24 21:32:50
【问题描述】:

我正在使用

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

向我的用户显示生成的 html 文件。如果在我拨打电话之前启动浏览器(firefox 3.5.7; linux),一切都很好。但是如果浏览器启动是从 getDesktop().browse 调用触发的,那么 Java 应用程序将不会退出,直到浏览器关闭。

如何避免这种行为?这在 windows/macOsx 下也是已知的吗?

(如果我随后强制退出 java 应用程序,浏览器也会关闭,有时甚至崩溃!?)

【问题讨论】:

    标签: java firefox browser


    【解决方案1】:

    浏览器存在的原因是因为浏览器是作为依赖进程启动的......所以当第一个进程关闭时,它的所有依赖进程都会随之关闭。但是在您首先启动浏览器的情况下,它已经有一个不受您的应用程序影响的不同进程 ID。我认为避免这种行为的唯一方法是使用不同的技术(可能是 Runtime.exec()?)以将浏览器注册为非依赖进程的方式启动浏览器。

    【讨论】:

    • 好的,谢谢!那成功了。我现在在这里使用代码:centerkey.com/java/browser(当然没有 jse6 的回退版本,否则如果其他调用不起作用,我将回退到 jse6 :-))
    【解决方案2】:

    项目浏览器启动器 (http://browserlaunch2.sourceforge.net/) 可以解决您的问题。您可以像这样从您的代码中启动浏览器:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-22
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      相关资源
      最近更新 更多