java - 从 Java 程序打开浏览器窗口

标签 java linux browser x11 daemon

问题

我有一个用 Java 编写的应用程序。它旨在独立运行在 Linux 机器上。我正在尝试生成一个新的 firefox 窗口。但是,firefox 永远不会打开。它的 shell 退出代码始终为 1。我可以使用 gnome-terminal 运行相同的代码,它可以正常打开。

背景

所以,这是它的初始化过程:

  1. 启动 X "Xorg :1 -br -terminate -dpms -quiet vt7"
  2. 启动窗口管理器“metacity --display=:1 --replace”
  3. 配置资源“xrdb -merge/etc/X11/Xresources”
  4. 成为守护进程并断开与控制终端的连接

程序开始运行后,用户可以单击一个按钮,该按钮会生成一个 Firefox 窗口。这是我的代码。请记住 X 正在显示 :1 上运行。

代码


public boolean openBrowser()
{
  try {
    Process oProc = Runtime.getRuntime().exec( "/usr/bin/firefox --display=:1" );
    int bExit = oProc.waitFor();  // This is always 1 for some reason

    return true;

  } catch ( Exception e ) {
    oLogger.log( Level.WARNING, "Open Browser", e );
    return false;
  }
}

最佳答案

如果可以缩小到 Java 6,则可以使用桌面 API:

http://java.sun.com/developer/technicalArticles/J2SE/Desktop/javase6/desktop_api/

应该看起来像:

    if (Desktop.isDesktopSupported()) {
        Desktop desktop = Desktop.getDesktop();
        if (desktop.isSupported(Desktop.Action.BROWSE)) {
            try {
                desktop.browse(new URI("http://localhost"));
            }
            catch(IOException ioe) {
                ioe.printStackTrace();
            }
            catch(URISyntaxException use) {
                use.printStackTrace();
            }
        }
    }

关于java - 从 Java 程序打开浏览器窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/248534/

相关文章:

java - OSGI捆绑优先级机制

asp.net - 在基于 Linux 的服务器上运行 ASP.Net

java - CSVwriter writerall 用java更改结果集的日期格式

java - 自组织模糊神经网络 (SOFNN) 在 Java、C、Python 等中的实现

java - Spring ,AOP,AspectJ :- is there a way to find out which method caused call to "beforeAdvice" and "afterAdvice"

linux - 如何在模式前切割十六进制

linux - asm X86 - 段错误?

c# - 在 C# 中获取 Google 搜索结果

javascript - 在 Android/iOS 中通过浏览器发送推送通知

Delphi webbrowser获取tthread对象中的所有链接