为了账号安全,请及时绑定邮箱和手机立即绑定

Desktop.getDesktop().isSupported

Desktop.getDesktop().isSupported

白衣非少年 2021-07-13 18:15:04
在 Java 中,我尝试使用 Desktop.getDesktop().open(File file) 打开文件,但它抛出 IOException 尽管 Desktop.getDesktop().isSupported(Desktop.Action.OPEN) 表示支持该操作。我正在使用 Gnome 版本:版本:3.22.3-3。代码片段:    Desktop desktop = Desktop.getDesktop();    if (desktop.isSupported(Desktop.Action.OPEN))        desktop.open(file);有谁知道为什么desktop.isSupported(Desktop.Action.OPEN)返回真?我知道我可以使用“xdg-open”来打开文件,但我想了解这里发生了什么。提前致谢!更新:堆栈跟踪:Caused by: java.io.IOException: Failed to show URI:file:/home/TEST_FILES/blabla.xlsat sun.awt.X11.XDesktopPeer.launch(XDesktopPeer.java:121)at sun.awt.X11.XDesktopPeer.open(XDesktopPeer.java:84)at java.awt.Desktop.open(Desktop.java:272)... 55 more更新 #2: xdg-open 工作正常,打开 LibreOffice Calc 中堆栈跟踪中提到的文件。
查看完整描述

2 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

Javadoc for public: boolean isSupported (Desktop.Action action)

即使平台支持操作,文件或 URI 也可能没有为该操作注册的应用程序。例如,大多数平台都支持 Desktop.Action.OPEN 操作。但是对于特定文件,可能没有注册应用程序来打开它。在这种情况下,isSupported(Action) 可能会返回 true,但相应的操作方法将抛出 IOException。


查看完整回答
反对 回复 2021-07-23
?
HUX布斯

TA贡献1876条经验 获得超6个赞

desktop.isSupported(Desktop.Action.OPEN) 告诉您平台支持打开文件,但可能没有注册的应用程序打开特定文件,或者注册的应用程序可能无法打开文件


查看完整回答
反对 回复 2021-07-23
  • 2 回答
  • 0 关注
  • 397 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信