java - Ubuntu 上的 Desktop.getDesktop().open(file) 无法正常工作

标签 java linux ubuntu awt

我有一个 Java 应用程序,当我使用 java.awt.Desktop 时:

Desktop.getDesktop().open(file);
它在 Windows 上运行良好(在我的默认程序中打开一个文件),但在 Ubuntu(使用 openJdk 13)上,Java 应用程序卡住了,我什至没有收到任何日志错误或任何东西。我必须强制退出应用程序才能恢复。
文件路径正确,否则我实际上会得到一个异常。另外,isDesktopSupported一个 isSupported(Action.OPEN)返回 true .
我能做些什么?我可以检查一些系统设置或日志吗?或者也许从 java.awt.Desktop 获取一些日志?或者这在 Ubuntu/Linux 上不起作用?
有没有其他选择?

最佳答案

来自 here :
为了使用 API,您必须调用 java.awt.EventQueue.invokeLater() 并从传递给 invokeLater() 的可运行对象中调用 Desktop 类的方法:

void fxEventHandler() {
   EQ.invokeLater(() -> {
      Desktop.open(...);
   });
}

关于java - Ubuntu 上的 Desktop.getDesktop().open(file) 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65852545/

相关文章:

ubuntu - ARM 嵌入式的交叉编译

java - 为 Android 实现 Firebase 服务器端倒数计时器?

java - 什么是IndexOutOfBoundsException?我该如何解决?

linux - 仅为一个进程保留一个处理器(已经具有最大优先级)

c - 将多个 C 库链接到 C 创建可执行文件

linux - 在64位Centos5上安装APC,phpize错误

ubuntu - 在 Ubuntu 上安装 OpenCV-2.4.3 时出错

java - 在日期字段 : Java 中不能使用超过 "2038"的年份

Java - 将字符串转换为数字的想法(正则表达式/解析/等)?

c++ - 水平合并 cv::Mat