Java (AWT TrayIcon) 和 Linux

问题描述 投票:0回答:1

较新的 Linux 发行版改用 SNI 来管理托盘图标,而 Java (AWT) 仍然使用 xembed。

有没有办法在Java中使用SNI代替xembed?

xembed 托盘图标不适用于使用 SNI 的操作系统。

java awt
1个回答
0
投票

查看 Java 21.0.3(以及 17.0.1111.0.238 更新 411)的发行说明,我认为您对 Java 中的内置支持不走运。我猜你需要寻找第三方库来支持这一点。

具体来说,发行说明说:

客户端库/java.awt
➜ 大多数 Linux 桌面不支持 AWT SystemTray API (JDK-8322750)

java.awt.SystemTray
API 用于桌面通知 任务栏并且可以包括代表应用程序的图标。在 Linux 上, Gnome 桌面自带的任务栏中图标支持不起作用 由于平台错误,已经正常运行了好几年。这反过来又具有 影响了依赖于此的 JDK 的 API。

因此,按照现有的Java SE规范,

java.awt.SystemTray.isSupported()
无论何时都会返回 false JDK 确定可能存在平台错误。

这种影响可能是有限的,因为应用程序总是 无论如何必须检查该支持。此外,一些发行版有 多年来不支持 SystemTray,除非最终用户 选择安装非捆绑的桌面扩展。

它没有以任何方式解决 xembed 与 SNI 的问题,但我猜这可能是他们谈论的 “平台错误”

或者,您需要向 Oracle 和/或 OpenJDK 项目报告错误,以解决缺乏支持的问题。

© www.soinside.com 2019 - 2024. All rights reserved.