我们最近为我们的一个Eclipse RCP应用程序进行了跨平台构建。在Ubuntu 16.04上,执行以下代码时:
Desktop.getDesktop().open(somePath.toFile())
它在gdk_display_open中与SIGABRT崩溃。我使用了Oracle的JVM和OpenJDK(JRE 8)来达到同样的效果。
我想,好吧,让我先尝试一下,如果不支持就禁用该功能:
public static boolean isSupported()
{
return Desktop.isDesktopSupported() &&
Desktop.getDesktop().isSupported(Desktop.Action.OPEN);
}
以完全相同的方式崩溃。我似乎无法确定桌面是否通过代码得到支持而不会导致崩溃。我使用的代码在Windows甚至Mac中都可以正常工作。为什么会发生这种情况并且有解决方法吗?请记住,这不是我可以捕获的普通旧Java异常,这会在JVM本身崩溃。