Java 图标代替应用程序图标显示;使用 install4j 安装

Java 图标代替应用程序图标显示;使用 install4j 安装

我有一个通过 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 的公司工作)。

主要问题是WMClassAWT 窗口的属性设置为主类。这意味着主类对于应用程序必须是唯一的,但 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条目。

相关内容