在 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。
HUX布斯
TA贡献1876条经验 获得超6个赞
desktop.isSupported(Desktop.Action.OPEN)
告诉您平台支持打开文件,但可能没有注册的应用程序打开特定文件,或者注册的应用程序可能无法打开文件
添加回答
举报
0/150
提交
取消