Java - .jar не удается найти ресурсы (изображения, шрифты) - PullRequest
3 голосов
/ 04 декабря 2011

Я не могу найти правильную комбинацию пути и класса против ClassLoader. Вот структура каталогов моего проекта:

  • сборка / классы / проект / MainClass.class
  • сборки / классы / ресурсы / изображения / an_image.png
  • сборка / классы / ресурсы / ImageLoader.class

Источник для ImageLoader выглядит следующим образом:

public class ImageLoader {

 public ImageLoader(){...}

 public BufferedImage loadImage(String fileName) {
     String loc = "resources" + File.separator + "images" + File.separator;
     URL imgURL = this.getClass().getResource(loc + fileName);
     BufferedImage img = null;
        try {
           img = ImageIO.read(imgURL);
        } catch (IOException e) {...}
        return img;
     }
  }

Я не совсем уверен, какая разница будет между этим и this.getClass().getClassLoader().getResource(), но я пробовал это с различными комбинациями путей, и я просто не могу заставить .jar найти и загрузить ресурсы.

Где я иду не так?

Спасибо.

1 Ответ

6 голосов
/ 04 декабря 2011

Не используйте File.separator для доступа к ресурсу, это всегда должно быть '/'. Возможно, стоит также добавить ведущий «/», чтобы указать, что ресурс можно найти в «вершине» структуры пути к классу (в отличие от подкаталога класса, который пытается его загрузить).

...