Desktop.getDesktop().open(file) 在 Ubuntu 不工作
Desktop.getDesktop().open(file) on Ubuntu not working
我有一个 Java 应用程序,当我使用 java.awt.Desktop:
Desktop.getDesktop().open(file);
它在 Windows 上工作正常(在我的默认程序中打开一个文件),但是在 Ubuntu 上(使用 openJdk 13),Java 应用程序卡住了,我没有甚至得到任何日志错误或任何东西。我必须强制退出应用程序才能恢复。
正确的文件路径,否则我实际上会得到一个异常。还有,isDesktopSupported
一个isSupported(Action.OPEN)
returnstrue
.
我能做什么?我可以检查一些系统设置或日志吗?或者从 java.awt.Desktop
获取一些日志?或者这不适用于 Ubuntu/Linux?
还有其他选择吗?
来自here:
为了使用 API,您必须调用 java.awt.EventQueue.invokeLater() 并从传递给 invokeLater() 的可运行对象调用桌面 class 的方法:
void fxEventHandler() {
EQ.invokeLater(() -> {
Desktop.open(...);
});
}
我有一个 Java 应用程序,当我使用 java.awt.Desktop:
Desktop.getDesktop().open(file);
它在 Windows 上工作正常(在我的默认程序中打开一个文件),但是在 Ubuntu 上(使用 openJdk 13),Java 应用程序卡住了,我没有甚至得到任何日志错误或任何东西。我必须强制退出应用程序才能恢复。
正确的文件路径,否则我实际上会得到一个异常。还有,isDesktopSupported
一个isSupported(Action.OPEN)
returnstrue
.
我能做什么?我可以检查一些系统设置或日志吗?或者从 java.awt.Desktop
获取一些日志?或者这不适用于 Ubuntu/Linux?
还有其他选择吗?
来自here:
为了使用 API,您必须调用 java.awt.EventQueue.invokeLater() 并从传递给 invokeLater() 的可运行对象调用桌面 class 的方法:
void fxEventHandler() {
EQ.invokeLater(() -> {
Desktop.open(...);
});
}