Ícone Java mostrado no lugar do ícone do aplicativo; instalado com install4j

Ícone Java mostrado no lugar do ícone do aplicativo; instalado com install4j

Tenho um aplicativo Java que instalei via install4j. O atalho na área de trabalho mostra o ícone correto do aplicativo que foi definido no arquivo .desktop; no entanto, uma vez iniciado, o ícone do aplicativo não aparece no dock. O ícone Java padrão é mostrado no lugar dele.

É assim que fica no Desktop:

Na área de trabalho

Mas no Dock mostra o ícone Java:

Na doca

Também não sei por que, o nome correto do aplicativo não aparece quando passo o mouse sobre o ícone no dock - em vez disso, ele nomeia o iniciador Java.

.Área de Trabalho:

#!/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;

Responder1

Isso será corrigido no install4j 8.0 em cerca de 2 semanas (fonte: trabalho para a empresa que desenvolve o install4j).

O principal problema é que a WMClasspropriedade das janelas AWT está definida como a classe principal. Isso significa que a classe principal deve ser exclusiva para a aplicação, mas o install4j insere sua própria classe principal que até 7.0 é sempre a mesma. Como solução alternativa, você poderia alterar o estado interno do kit de ferramentas AWT de forma reflexiva:

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>");
}

No install4j 8.0, uma classe principal exclusiva será gerada e o arquivo .desktop gerado incluirá uma StartupWMClassentrada correspondente.

informação relacionada