![Java jar 启动器,以编程方式保存设置的图标和名称](https://linux22.com/image/1131510/Java%20jar%20%E5%90%AF%E5%8A%A8%E5%99%A8%EF%BC%8C%E4%BB%A5%E7%BC%96%E7%A8%8B%E6%96%B9%E5%BC%8F%E4%BF%9D%E5%AD%98%E8%AE%BE%E7%BD%AE%E7%9A%84%E5%9B%BE%E6%A0%87%E5%92%8C%E5%90%8D%E7%A7%B0.png)
在我的环境中,我们有很多可执行文件胶囊jar 文件,根据它们所连接的环境,以编程方式设置自定义图标和名称。这是通过在启动时调用 javax.swing.JFrame.setIconImage 和 setTitle 来完成的。我们有一个集中式仪表板,我们可以在其中下载可执行 jar 文件(几百个不同的 jar 文件),所以很明显,我希望能够下载一个并直接运行它。为此,互联网上到处都有指南,我想出了常规解决方案:
.本地/共享/应用程序/java-jar-launcher.desktop:
[Desktop Entry]
Type=Application
Name=Java Application Launcher
Icon=java
Exec=/usr/bin/java -jar %U
Categories=Application;Java
Terminal=False
.local/share/applications/mimeapps.list 包含:
application/x-java-archive=java-jar-launcher.desktop
但是,这不尊重应用程序设置的图标,只有灰色问号。更令人沮丧的是,所有应用程序和所有打开的窗口最终都位于停靠栏中的同一位置,彼此无法区分,都名为 Java Application Launcher。
如果我通过 java -jar 从终端启动下载的 jar,则图标及其以编程方式设置的名称都会在 dock 中可见,将不同的应用程序彼此分开。
我怎样才能让 jar 自动启动并保留图标和名称?我无法创建数百个桌面文件,因为这不是一组固定的应用程序。
运行 Ubuntu 15.10 / Java 1.8.0_66
答案1
为了去掉灰色问号,请添加以下代码行:
stage.getIcons().add(new Image(getClass().getResourceAsStream("/Images/orca.png")));