Linux上没有默认浏览器的解决方法?

时间:2009-05-18 21:27:27

标签: java linux

我正在尝试使用Desktop。browse()来调用URL,这在Windows机器上或配置了默认浏览器的Linux机器上运行正常。但是,如果在Linux上找不到默认浏览器,则会抛出IOException异常。有哪些方法可以解决这个问题?我想我可以尝试启动Firefox并假设它在那里,但我不想做出这样的假设。

6 个答案:

答案 0 :(得分:9)

您可以允许用户输入他们想要启动浏览器的命令,然后保存该命令,以便每次都使用该命令。

答案 1 :(得分:7)

我认为除了之外你还能做很多事情:

  1. 检查常见浏览器的常见位置(firefox,mozilla等)
  2. 迭代PATH环境变量,寻找常见的浏览器可执行文件。
  3. 在配置中询问用户。
  4. 此外,有一个whole section of the SWT FAQ致力于发现在特定系统上使用的适当版本的firefox(继续阅读上面链接的问题。)

答案 2 :(得分:3)

尝试xdg-open或尝试使用konqueror(默认使用KDE,但Desktop API不支持)和firefox。

还尝试使用kmclient exec url。

if (Desktop.isDesktopSupported()) {
   desktop = Desktop.getDesktop();
   // blah blah
} else {
   // try to launch xdg-open
   // or try launching other browsers?
} 

答案 3 :(得分:2)

您可以按某种顺序尝试各种浏览器 - Firefox,Opera等等;还保留一个可编辑的配置文件,让用户设置浏览器,记住你找到的那个,等等。

答案 4 :(得分:2)

看起来Desktop.browse()最终在* ix上调用XDesktopPeer.browse()。通过调用is implemented,该方法gnome_url_show。在某些情况下,这可能正常,但xdg-open是跨平台解决方案,正如其他人所指出的那样。

可以说,这是Sun Java中的一个错误。 Bug 6490730,“桌面抛出IOException而不是显示网址或发送邮件”,(2006年11月报道)似乎相关

答案 5 :(得分:1)

如果您要实现“通过一堆浏览器循环”之一,请尝试先执行xdg-open http://the/url 。如果由于某种原因Java无法找到它,那应该是open the default browser。 (看起来这似乎是Java所做的事情。)