Carregando BufferImage com Classloader.GetResource ()
-
22-09-2019 - |
Pergunta
Estou tentando carregar um arquivo de imagem (GIF) que é armazenado localmente no mesmo diretório do meu projeto Eclipse Java:
ref
é o caminho relativo onde a imagem GIF é armazenada.
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);
}
}
O código do cliente que usa o método acima é:
public Entity(String ref,int x,int y) {
this.sprite = ResourceManager.getSprite("sprites/alien.gif");
this.x = x;
this.y = y;
}
No espaço de trabalho do Eclipse e dentro do meu diretório de projeto, tenho uma pasta sprites
com as imagens GIF armazenadas lá. Mas o código do cliente sempre retorna: Can't find ref: sprites/ship.gif
Estou fazendo algo errado na minha abordagem acima para carregar a imagem do GIF? Existe uma maneira mais direta de fazer uma pesquisa de arquivo neste caso?
Muito obrigado por qualquer conselho.
Solução
o getResource()
Método pesquisa o seu Classpath Para encontrar o arquivo, provavelmente o sprites O diretório não está no seu caminho de classe.
Experimente o Open Your Project Properties -> Java Build Path
, selecione Libraries
guia e clique em Add Class Folder
botão em seguida, selecione o diretório pai de sprites.