загрузка BufferedImage с помощью ClassLoader.getResource()

Я пытаюсь загрузить файл изображения (gif), который хранится локально в том же каталоге, что и мой java-проект Eclipse:

ref — это относительный путь, по которому хранится изображение в формате gif.

public Sprite getSprite(String ref) {
      BufferedImage sourceImage = null;
      try {
        URL url = this.getClass().getClassLoader().getResource(ref);        
        if (url == null) {
        fail("Can't find ref: "+ref);
       }
       sourceImage = ImageIO.read(url);
       } catch (IOException e) {
        fail("Failed to load: "+ref);
       }
}

Клиентский код, использующий описанный выше метод:

public Entity(String ref,int x,int y) {
        this.sprite = ResourceManager.getSprite("sprites/alien.gif");
        this.x = x;
        this.y = y;
    }

В рабочей области Eclipse и в каталоге моего проекта у меня есть папка sprites с сохраненными там изображениями gif. Но клиентский код всегда возвращает: Can't find ref: sprites/ship.gif

Я делаю что-то неправильно в своем подходе выше, чтобы загрузить изображение GIF? Есть ли более простой способ поиска файлов в этом случае?

Большое спасибо за любой совет.


person denchr    schedule 25.11.2009    source источник
comment
это не имеет ничего общего с вопросом, который вы задаете, но технически спрайт — это объект с позицией, текстурой и т. д. и т. д., и вы пытаетесь загрузить здесь текстуру вместо спрайта, просто для вашего сведения   -  person Jose De Gouveia    schedule 14.03.2013


Ответы (1)


Метод getResource() просматривает ваш путь к классам, чтобы найти файл, вероятно, каталога sprites нет в вашем пути к классам.

Попробуйте открыть свойства проекта -> Java Build Path, выберите вкладку Libraries и нажмите кнопку Add Class Folder, затем выберите родительский каталог спрайтов.

person DJ.    schedule 25.11.2009
comment
Я думаю, вы имеете в виду родительский каталог каталога спрайтов, не так ли? - person Benjamin Cox; 25.11.2009
comment
Да, это действительно помогло! Родительский каталог, который - person denchr; 25.11.2009
comment
вы правы, я исправил ответ, чтобы он указывал на родительский каталог - person DJ.; 26.11.2009
comment
Вы не представляете, как долго я искал этот ответ. Спасибо! - person Tawani; 19.02.2010