试图从jar文件加载图标

我正在尝试从jar文件加载图标。 我都试图从jar文件中的类以及jar文件之外的类加载它。

在jarfile之外 – 返回了一个nullexception

java.net.URL imageURL = LoadHTMLExample.class.getClassLoader() .getResource("icons/mouse.png"); 

在LoadHTMLExample中的jar文件的一侧

 java.net.URL imageURL = this.getClass().getClassLoader() .getResource("icons/mouse.png"); 

得到同样的错误。

我也尝试了各种各样的“图标”,“/ icons”“icons /”“/ icons / _mouse.png”“icons / mouse.png”

什么似乎都没有任何想法

该图标位于jar文件中

 jar --icons --- {all the images} --com.blah.blah 

跳过类加载器,然后将资源作为流来获取。 如果您不需要URL,可以将它们直接转换为BufferedImages。 我已将流和exception处理作为进一步的练习。

 InputStream stream = LoadHTMLExample.class .getResourceAsStream( "/icons/mouse.png" ); BufferedImage image = ImageIO.read( stream ); 

提问者需要URL,它将我们带回给其他人的建议。 图像肯定在jar子里不是吗?

我一直使用系统类加载器,其路径相对于JAR的根目录:

 URL url = ClassLoader.getSystemClassLoader().getResource("icons/mouse.png"); Icon icon = new ImageIcon(url); 

我认为getResource获取相对于LoadHTMLExample.class位置的LoadHTMLExample.class 。 因此,您的jarfile应按以下方式构建:

 myjar.jar | |- ... |- LoadHTMLExample.class |- ... \-- icons | \- mourse.png 

此外,您可能通过getResourceAsStream获取流而不是获取URL

在运行时的类路径上有问题吗? 我有一个带有PNG的jar,如果我不在类路径中包含它,我可以重新创建空值。 如果jar子在那里他们就会消失。

final java.net.URL imageURL3 = com.java.html.LoadHTMLExample.class.getResource(“icons /”);

适用于以下目录结构

myjar.jar | | – … | – LoadHTMLExample.class | – … – 图标| – mourse.png

感谢大家的帮助