为什么我在这里找到一个未找到文件的例外?

时间:2011-08-15 22:36:16

标签: java string comparison

这让我疯了! 我使用了连接和格式,当生成的字符串与正确的路径匹配时,循环会抛出get go的异常。

发生了什么事?

ImageIcon thisWorks= new ImageIcon(testview.class.getResource("/led_images/"+1+"_off.png"));
    for(int i = 1; i <= 10; i++)
    {
        String on = String.format("/led_images/%d_on.png",i);
        String off = String.format("/led_images/%d_off.png",i);


    ledIcons.put( i+"_off", new ImageIcon(testview.class.getResource(off)));
    ledIcons.put( i+"_on", new ImageIcon(testview.class.getResource(on)));
    }

编辑: 我是否正确使用Map? 这是一个Map<String,ImageIcon>

EDIT2: 是的,我想我正在错误地使用地图。

我声明它是这样的:

public Map< String, ImageIcon> ledIcons;

它是循环内的空值。 所以我猜它不像c ++那么?

EDIT3: 是的,没关系这个问题,我没有正确地初始化这个领域,道歉。

3 个答案:

答案 0 :(得分:3)

如果thisWorks有效,那么显然"/led_images/1_off.png"存在。如果循环中的图像有例外,那么可能是

之一
/led_images/2_off.png
/led_images/2_off.png
/led_images/3_off.png
...
/led_images/10_off.png

/led_images/1_on.png
/led_images/2_on.png
/led_images/3_on.png
...
/led_images/10_on.png

缺失。

  

编辑:我使用的地图不正确吗?这是一张地图。

不,这对我来说很好看。 (除非您以后检索有问题。)

答案 1 :(得分:2)

我猜测领先的斜线是问题;你可能想要一个相对路径。请参阅文档:

http://download.oracle.com/javase/6/docs/api/java/lang/Class.html#getResource(java.lang.String

答案 2 :(得分:2)

初始化字段:

public Map< String, ImageIcon> ledIcons = new HashMap< String, ImageIcon>();