Ubuntu DEB安装程序使所有Java应用程序具有相同的图标
我已经为基于Debian的系统创建了Java应用程序的DEB安装程序。在我的DEB包中,我使用一个*.desktop文件,如下所示:Ubuntu DEB安装程序使所有Java应用程序具有相同的图标,java,ubuntu,icons,deb,Java,Ubuntu,Icons,Deb,我已经为基于Debian的系统创建了Java应用程序的DEB安装程序。在我的DEB包中,我使用一个*.desktop文件,如下所示: [Desktop Entry] Encoding=UTF-8 Version=${version} Type=Application Terminal=false Exec=java -jar /usr/lib/name-of-my-app/${jar} Name=${name} Icon=/usr/share/icons/hicolor/128x128/apps
[Desktop Entry]
Encoding=UTF-8
Version=${version}
Type=Application
Terminal=false
Exec=java -jar /usr/lib/name-of-my-app/${jar}
Name=${name}
Icon=/usr/share/icons/hicolor/128x128/apps/name-of-my-app.png
一切正常,我的应用程序安装良好,运行良好。但我注意到了一件非常奇怪的事情:在Ubuntu上第一次运行我的应用程序之后,整个系统中所有其他名为“java”的进程现在都有了图标,我在*.desktop文件中指定了这个图标。这是Ubuntu的bug吗?这是我的安装程序中的一个bug吗?适用于那些在Ubuntu和其他Linux中寻找Java应用程序解决方案的人。根据您使用的UI工具包,似乎有两种方法可以做到这一点
Toolkit xToolkit = Toolkit.getDefaultToolkit();
java.lang.reflect.Field awtAppClassNameField =
xToolkit.getClass().getDeclaredField("awtAppClassName");
awtAppClassNameField.setAccessible(true);
awtAppClassNameField.set(xToolkit, "MyAppName");
Display.setAppName("MyAppName");
xprop|grep WM_CLASS
它会将光标更改为十字符号。使用新的交叉符号光标,单击正在运行的应用程序的窗口,确保输出是正确的
WM_CLASS(STRING) = "MyAppName", "MyAppName"
其中“MyAppName”是您先前传递给AWT/SWT的字符串
如果一切正常,则向MyAppName.desktop文件添加一行,如下所示:
StartupWMClass=MyAppName
也许这篇帖子仍然有效:@tetetet哇,这很简单,正是我所需要的。谢谢!你能把这个作为答案,这样我就可以接受了吗?你已经写得很好了,比我写得好。请接受你自己的答案。