Java-Symbol wird anstelle des Anwendungssymbols angezeigt; installiert mit install4j

Java-Symbol wird anstelle des Anwendungssymbols angezeigt; installiert mit install4j

Ich habe eine Java-Anwendung, die ich über install4j installiert habe. Die Desktopverknüpfung zeigt das korrekte Anwendungssymbol, das in der .desktop-Datei festgelegt wurde. Nach dem Start wird das Anwendungssymbol jedoch nicht im Dock angezeigt. Stattdessen wird das Standard-Java-Symbol angezeigt.

So sieht es auf dem Desktop aus:

Auf dem Bildschirm

Aber im Dock wird das Java-Symbol angezeigt:

Auf der Anklagebank

Ich bin mir auch nicht sicher, warum der richtige Anwendungsname nicht angezeigt wird, wenn ich mit der Maus über das Symbol im Dock fahre. Stattdessen wird der Java-Launcher genannt.

.desktop:

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

Antwort1

Dies wird in etwa 2 Wochen in install4j 8.0 behoben (Quelle: Ich arbeite für das Unternehmen, das install4j entwickelt).

Das Hauptproblem besteht darin, dass die WMClassEigenschaft von AWT-Fenstern auf die Hauptklasse eingestellt ist. Dies bedeutet, dass die Hauptklasse für die Anwendung eindeutig sein muss, aber install4j fügt seine eigene Hauptklasse ein, die bis 7.0 immer dieselbe ist. Als Workaround könnten Sie den internen Status des AWT-Toolkits reflektierend ändern:

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

In install4j 8.0 wird eine eindeutige Hauptklasse generiert und die generierte .desktop-Datei enthält einen entsprechenden StartupWMClassEintrag.

verwandte Informationen