Desktop.getDesktop().isSupported

在 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.xls

at 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 中堆栈跟踪中提到的文件。


白衣非少年
浏览 398回答 2
2回答

潇湘沐

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

HUX布斯

desktop.isSupported(Desktop.Action.OPEN) 告诉您平台支持打开文件,但可能没有注册的应用程序打开特定文件,或者注册的应用程序可能无法打开文件
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java