我有一个通过 install4j 安装的 Java 应用程序。桌面快捷方式显示了在 .desktop 文件中设置的正确应用程序图标;但是,一旦启动,应用程序图标就不会显示在 Dock 上。默认 Java 图标会代替它显示。
它在桌面上的样子如下:
但在 Dock 上它显示 Java 图标:
我也不确定为什么,当我将鼠标悬停在 Dock 上的图标上时,没有出现正确的应用程序名称 - 而是命名了 java 启动器。
。桌面:
#!/usr/bin/env xdg-open
[Desktop Entry]
Type=Application
Name=NMRViewJ
Exec="/home/issac/NMRViewJ/NMRViewJ"
Icon=/home/issac/NMRViewJ/.install4j/NMRViewJ.png
StartupWMClass = sun-awt-X11-XFramePeer
Categories=Application;
答案1
这将在大约 2 周后在 install4j 8.0 中修复(来源:我在开发 install4j 的公司工作)。
主要问题是WMClass
AWT 窗口的属性设置为主类。这意味着主类对于应用程序必须是唯一的,但 install4j 会插入自己的主类,直到 7.0 版本,该主类始终相同。作为一种解决方法,您可以反射性地更改 AWT 工具包的内部状态:
Class<?> toolkitClass = Toolkit.getDefaultToolkit().getClass();
if (toolkitClass.getName().equals("sun.awt.X11.XToolkit")) {
Field awtAppClassName = toolkitClass.getDeclaredField("awtAppClassName");
awtAppClassName.setAccessible(true);
awtAppClassName.set(null, "<my unique application name>");
}
在install4j 8.0中会生成一个唯一的主类,并且生成的.desktop文件会包含相应的StartupWMClass
条目。