当前位置: 首页 > 知识库问答 >
问题:

Ubuntu DEB 安装程序使所有 Java 应用程序都具有相同的图标

史修明
2023-03-14

我已经为基于 Debian 的系统创建了一个 Java 应用程序的 DEB 安装程序。在我的 DEB 软件包中,我使用一个 *.桌面文件,如下所示:

[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”的进程现在都有图标,我在*中指定了这个图标。桌面文件。这是Ubuntu bug吗?这是我的安装程序中的错误吗?

共有1个答案

微生鸿轩
2023-03-14

对于那些在Ubuntu和其他Linux中寻找Java应用程序解决方案的人。似乎有两种方法可以做到这一点,具体取决于您使用的UI工具包。

>

  • 对于那些使用AWT和/或Swing(又基于AWT)的人来说,你现在只有一个解决方法,http://elliotth.blogspot.com/2007/02/fixing-wmclass-for-your-java.html - 这个家伙设法解决了WM_CLASS:

    Toolkit xToolkit = Toolkit.getDefaultToolkit();
    java.lang.reflect.Field awtAppClassNameField =
      xToolkit.getClass().getDeclaredField("awtAppClassName");
    awtAppClassNameField.setAccessible(true);
    awtAppClassNameField.set(xToolkit, "MyAppName");
    

    对于那些使用SWT的人来说,有一种更简单,有文档记录的方法:

    Display.setAppName("MyAppName");

    完成 (1) 或 (2) 后,您现在可以通过运行

    xprop|grep WM_CLASS
    

    它会将光标更改为十字符号。使用新的十字符号光标,单击正在运行的应用程序的窗口,确保输出

    WM_CLASS(STRING) = "MyAppName", "MyAppName"
    

    其中“我的应用名称”是您之前传递给AWT / SWT的字符串。

    如果一切顺利,则在MyAppName.desktop文件中添加一行,如下所示:

    StartupWMClass=MyAppName
    

  •  类似资料:
    • 问题内容: 我不是在寻找java-web- start,而是在寻找胖客户端应用程序安装工具包。我有一个独立的应用程序,其中包含几个文件(jar文件,数据文件等),并且需要执行一些非常标准的安装任务,例如向用户询问目标目录,让他们找到系统的某些部分- 选择一些按计算机或按用户配置的选项,并可能尝试检测它们的某些计算机设置。 我正在寻找类似于MSI或其他向导驱动的安装应用程序的东西。什么是Java的良

    • 有没有人知道通过Google Play发布的设备拥有者应用程序在发生更新时的生产行为? 正如我们所知,安装一个设备拥有者应用程序需要一些动机,而且并不容易:重置为出厂默认,然后为设备提供NFC--第二个设备等等……所以,即使我们认为这一步已经完成,任何进一步的更新是否每次都需要如此多的痛苦? 出现此问题是因为在我的开发设备上,如果之前安装了设备所有者应用程序,我无法重新启动该应用程序的更改…除非我

    • 在我的模拟器中,当我尝试以编程方式升级apk时。我得到:

    • 我正在学习Spring boot application,并且有使用xml和java配置的Spring应用程序的经验。 我使用的应用程序具有包含UI、服务和DAO的代码基体系结构。所有这些组件都有单独的上下文文件,即。web-applicationcontext.xml或application-servlet-context.xml、service-context.xml和data-context

    • 为什么单子里的牌都一样?我尝试了,但输出仍然相同。 Main.java 产出: Lorem ipsum dolor sit amet,consectetur adipiscing Elit。Aenean nisl.curabitur ac arcu ornare,aliquet eros eu,pretium massa.

    • 问题内容: Java很小的时候,人们对编写applet感到兴奋。他们很酷很受欢迎。现在,我再也看不到他们了。取而代之的是,我们拥有Flash,JavaScript和许多其他Web应用程序构建技术。 为什么网站不再使用Java Applet? 我也很好奇:从历史上看,您为什么认为这发生了?为了使Java applet保持生存状态,可以采取哪些其他措施? 问题答案: 我认为Java小程序已被Flash