图像没有从jar加载

时间:2012-11-01 17:40:16

标签: java swing awt

我做了一个应用程序,其中我有一些图像要加载图标。当我使用

加载图像时,程序运行良好,每个工作和图像加载按预期
imageOpen = Toolkit.getDefaultToolkit().getImage("Images\\open.png");

但是当我将它导出为jar时,图像没有显示出来 然后看了这里和那里后我尝试了一些东西,但在这两种情况下,URL都返回null

URL u = this.getClass().getResource("Images\\open.png");
imageOpen = Toolkit.getDefaultToolkit().createImage(u);

另一个案例

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
URL resource = classLoader.getResource("Images\\open.png");
imageOpen = Toolkit.getDefaultToolkit().createImage(resource);

任何人都可以告诉我为什么我会变空,我甚至尝试了“\ Images \ open.png”,“/ Images / open.png”和“。\ Images \ open.png”的路径 我正在使用eclipse,图像存储在父目录中名为Images的文件夹中,源文件位于src> master

3 个答案:

答案 0 :(得分:3)

使用images/open.png。正斜杠适用于任何操作系统。另外,jar tvf您的jar文件,以确保images目录大写Images,因为您认为它是。它可能不是,如果您使用的是Windows(或不区分大小写的文件系统),它可以在目录中正常工作,但不能从jar中工作。

答案 1 :(得分:1)

你确定url为null或使用imageOpen时问题是什么?有时Toolkit.getDefaultToolkit()。createImage()返回inmediatly但图像未完全加载且imageOpen不可用。您需要等待图像的负载。这是java代码

JLabel label = new JLabel();
MediaTracker media = new MediaTracker(label);

Image imagen = Toolkit.getDefaultToolkit().getImage ("fichero.gif");
media.addImage(imagen, 23);
try
{
   media.waitForID(23);
}
catch (InterruptedException e)
{
   ...
}

答案 2 :(得分:0)

我能够通过为jar创建资源包并从该文件中获取路径来实现我的问题的解决方案