首页 > 解决方案 > 当 Jar 通过 Windows 10 链接启动时 setIconImage 不起作用

问题描述

怎么了?为什么当 Jar 通过 Windows 10 链接启动时,Windows 10 任务栏上会显示错误的图像图标(常规 Java 图标,而不是我放入 Jar 中的那个)?

我有一个罐子,它试图将其图像图标设置为...

    this.setIconImage(icon);

当程序使用命令行启动时,它工作正常...

    java -jar C:\Games\RealWar.jar

然后(或当 Eclipse 运行程序时),Jar 内部的正确图标会显示在 Windows 10 任务栏上,

但是正确的图标不会显示在任务栏上,当 Jar 由 Windows 10 链接启动时,该链接包含一个目标字符串,如...

    "C:\Program Files\Java\jdk1.8.0_152\bin\java.exe" -jar C:\Games\Java\RealWar.jar

在这两种情况下,程序窗口的左上角都会显示正确的图像图标,但是当使用 Windows 10 链接启动程序时,任务栏上的图标是常规的 Java 图标,而不是命令行,而不是罐子里的那个。

我想我还想指出,当 Jar 通过 Windows 10 链接启动时,Jar 仍在查找其 ImageIcon。我知道这一点,因为我在程序中设置了一个测试...

    System.out.println("Icon is null.");

...如果它找不到它的图标。但我知道它找到它的图标就好了,因为它说另一个......

    System.out.println("Icon is not null.");

...反而

我还尝试将 Windows 10 链接中的目标字符串缩短为...

    java -jar "C:\Games\Java\RealWar.jar"

...但它不起作用。Windows 10 坚持将“java”更改为...

    "C:\Program Files\Java\jdk1.8.0_152\bin\java.exe"

... 或者...

    C:\ProgramData\Oracle\Java\javapath\java.exe

并且这些都不会导致 Windows 10 在 Windows 10 任务栏上显示正确的图像图标。

那么有什么问题呢?为什么当 Jar 通过 Windows 10 链接启动时,Windows 10 任务栏上会显示错误的图像图标(常规 Java 图标,而不是我放入 Jar 中的那个)?

所以图像图标是“不为空”的。Jar 中的程序找到了它的图像图标。它在程序窗口的左上角张贴了它的图像图标。

但是当程序通过 Windows 10 链接而不是命令行启动时,任务栏上只会显示常规的 Java 图标,而不是正确的图像图标。

标签: javaswingjframeiconsembedded-resource

解决方案


推荐阅读