
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:
Aber im Dock wird das Java-Symbol angezeigt:
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 WMClass
Eigenschaft 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 StartupWMClass
Eintrag.