我正在尝试使用Desktop。browse()来调用URL,这在Windows机器上或配置了默认浏览器的Linux机器上运行正常。但是,如果在Linux上找不到默认浏览器,则会抛出IOException异常。有哪些方法可以解决这个问题?我想我可以尝试启动Firefox并假设它在那里,但我不想做出这样的假设。
答案 0 :(得分:9)
您可以允许用户输入他们想要启动浏览器的命令,然后保存该命令,以便每次都使用该命令。
答案 1 :(得分:7)
我认为除了之外你还能做很多事情:
此外,有一个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所做的事情。)