アプリケーション アイコンの代わりに Java アイコンが表示されます。install4j でインストールされます。

アプリケーション アイコンの代わりに Java アイコンが表示されます。install4j でインストールされます。

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 を開発している会社で働いています)。

主な問題は、WMClassAWT ウィンドウのプロパティがメイン クラスに設定されていることです。つまり、メイン クラスはアプリケーションごとに一意である必要がありますが、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エントリが含まれます。

関連情報