Se muestra el ícono de Java en lugar del ícono de la aplicación; instalado con install4j

Se muestra el ícono de Java en lugar del ícono de la aplicación; instalado con install4j

Tengo una aplicación Java que instalé mediante install4j. El acceso directo del escritorio muestra el ícono de la aplicación correcta que se configuró en el archivo .desktop; sin embargo, una vez iniciada, el ícono de la aplicación no aparece en el Dock. En su lugar se muestra el icono de Java predeterminado.

Así se ve en el escritorio:

En el escritorio

Pero en el Dock muestra el ícono de Java:

En el muelle

Tampoco estoy seguro de por qué, el nombre correcto de la aplicación no aparece cuando paso el cursor sobre el ícono en el Dock; en su lugar, nombra el iniciador de Java.

.escritorio:

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

Respuesta1

Esto se solucionará en install4j 8.0 en aproximadamente 2 semanas (fuente: trabajo para la empresa que desarrolla install4j).

El principal problema es que la WMClasspropiedad de las ventanas AWT está configurada en la clase principal. Esto significa que la clase principal debe ser única para la aplicación, pero install4j inserta su propia clase principal que hasta 7.0 es siempre la misma. Como solución alternativa, podría cambiar el estado interno del kit de herramientas AWT de manera 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>");
}

En install4j 8.0, se generará una clase principal única y el archivo .desktop generado incluirá la StartupWMClassentrada correspondiente.

información relacionada