
install4j 経由でインストールした Java アプリケーションがあります。デスクトップ ショートカットには、.desktop ファイルで設定された正しいアプリケーション アイコンが表示されますが、起動すると、アプリケーション アイコンがドックに表示されません。代わりに、デフォルトの Java アイコンが表示されます。
デスクトップでは次のようになります:
しかし、Dock には Java アイコンが表示されます:
また、ドック上のアイコンにマウスを移動しても正しいアプリケーション名が表示されず、代わりに 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;
答え1
これは、約 2 週間以内に install4j 8.0 で修正される予定です (出典: 私は install4j を開発している会社で働いています)。
主な問題は、WMClass
AWT ウィンドウのプロパティがメイン クラスに設定されていることです。つまり、メイン クラスはアプリケーションごとに一意である必要がありますが、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>");
}
install4j 8.0 では、一意のメイン クラスが生成され、生成された .desktop ファイルには対応するStartupWMClass
エントリが含まれます。