iac*_*786 2 icons java launcher
我有一个通过 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;
Run Code Online (Sandbox Code Playgroud)
这将在大约 2 周内在 install4j 8.0 中修复(来源:我为开发 install4j 的公司工作)。
主要问题是WMClassAWT windows的属性设置为主类。这意味着应用程序的主类必须是唯一的,但是 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>");
}
Run Code Online (Sandbox Code Playgroud)
在 install4j 8.0 中,将生成唯一的主类,生成的 .desktop 文件将包含相应的StartupWMClass条目。