Java Image加载无法找到一个图像

时间:2014-11-16 22:30:25

标签: java image

我知道我无法在IDE之外加载单个图像(在众多图像中)。我正在使用ImageLoader

private Image loadImageFile(String path){
    System.out.println("Load image: "+path);
    URL imgPath = getClass().getResource(path);          
    Image img = null;

    try {
        img = ImageIO.read(imgPath);
    } 
    catch(IllegalArgumentException | IOException e){
        System.out.println("Cannot find file.");
    }
    return img;
}

传递给该函数的所有路径都以“/”开头。如输出中所示。这是Netbeans的输出:

Load image: /res/uvodBG.png
...
Load image: /res/userBG.png
Load image: /res/ruletaTopBG.jpg
...
Load image: /res/uvodRegBG.png

Netbeans下的一切运行正常,但是当我尝试运行.jar文件时:

Load image: /res/uvodBG.png
...
Load image: /res/userBG.png
Cannot find file.
Load image: /res/ruletaTopBG.jpg
...
Load image: /res/uvodRegBG.png

所以我的问题是,为什么,当从.jar文件运行它时,并非只有一个图像没有正确加载。


堆栈跟踪:

Lis 17, 2014 11:58:51 DOP. loader.ImageLoader loadImageFile
SEVERE: null
java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(ImageIO.java:1388)
at loader.ImageLoader.loadImageFile(ImageLoader.java:40)
at loader.ImageLoader.loadTexture(ImageLoader.java:31)
at viewParts.inner.UserInfoPanel.<init>(UserInfoPanel.java:66)
at viewParts.inner.RoomsInnerPanel.<init>(RoomsInnerPanel.java:82)
at viewParts.inner.LoginInnerPanel.<init>(LoginInnerPanel.java:80)
at viewParts.RuletteFrame.<init>(RuletteFrame.java:38)
at starter.NURRulette.main(NURRulette.java:20)

在UserInfoPanel.java:66是:

background = loader.loadTexture(BACKGROUND_PATH);

我在构造函数中调用loader实例,其中BACKGROUND_PATH是私有的最终字符串BACKGROUND_POR =“/ sts/userBG.png”;在同一个班级。


MANIFEST文件

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.9.2
Created-By: 1.8.0_05-b13 (Oracle Corporation)
Class-Path: 
X-COMMENT: Main-Class will be added automatically by build
Main-Class: starter.NURRulette

jar文件的结构

  • actionPerformers
  • appRenderThread
  • ...
  • 装载机
  • META-INF
  • RES
  • ...

所有图片,包括userBG.png,都在res文件夹中。 ImageLoader.class文件位于loader文件夹中。

0 个答案:

没有答案