繁体   English   中英

设置图标时java.lang.NullPointerException?

[英]java.lang.NullPointerException when setting icon?

我最近尝试使用我自己创建的.ico文件设置我的默认应用程序图标。 这是我用来创建图标的代码:

initComponents();
java.net.URL url = ClassLoader.getSystemResource("/src/calculatormedii/resources/CMedii.ico");
Toolkit kit = Toolkit.getDefaultToolkit();
Image img = kit.createImage(url);
getFrame().setIconImage(img);

我不知道为什么在netbeans中设置java桌面应用程序图标这么困难,它应该只是一个属性字段,就像其余的一样。 当我尝试运行程序时,会出现以下错误:

    Uncaught error fetching image:
java.lang.NullPointerException
    at sun.awt.image.URLImageSource.getConnection(URLImageSource.java:99)
    at sun.awt.image.URLImageSource.getDecoder(URLImageSource.java:113)
    at sun.awt.image.InputStreamImageSource.doFetch(InputStreamImageSource.java:240)
    at sun.awt.image.ImageFetcher.fetchloop(ImageFetcher.java:172)
    at sun.awt.image.ImageFetcher.run(ImageFetcher.java:136)

不知道现在该做什么。 如果有另一种设置应用程序图标的方法,请指定它(如netbeans中的属性字段或其他内容)

我强烈怀疑这是你正在使用的网址。 使用ClassLoader.getSystemResource ,你不需要一个前导斜杠 - 但我非常怀疑你是否想要src部分。 您应确保将图标复制到类文件所在的位置(例如bin目录),然后使用:

URL url = ClassLoader.getSystemResource("calculatormedii/resources/CMedii.ico");

您应该打印更多的堆栈跟踪。 如果你向下看,你会在代码中找到导致java librairies中的异常的调用者行。

但在您的情况下,问题来自于您将getSystemResource作为参数提供的路径应该相对于包含您正在编码的类的实际类文件的文件夹。

更确切地说,您可以同时使用:

  • ClassLoader.getSystemResource然后路径必须相对于您的类路径条目
  • getClass.getResourceUrl和路径必须相对于您编码的类的类文件。
  • X.class.getResourceUrl和路径必须相对于类X的类文件。

如果你将eclipse与maven一起使用,那么就应该有一个默认的文件夹结构

 /src/main/java
 /src/main/resources

然后一切都为您处理:复制与编译java文件相同的文件夹内的资源文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM