loading BufferedImage con ClassLoader.getResource ()
-
22-09-2019 - |
Domanda
Sto cercando di caricare un file di immagine (GIF) che viene memorizzato localmente nella stessa directory come il mio progetto Java Eclipse:
ref
è il percorso relativo in cui è memorizzata l'immagine 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);
}
}
Il codice client che utilizza il metodo di cui sopra è:
public Entity(String ref,int x,int y) {
this.sprite = ResourceManager.getSprite("sprites/alien.gif");
this.x = x;
this.y = y;
}
Nello spazio di lavoro Eclipse e all'interno del mio directory del progetto Ho una cartella sprites
with le immagini gif memorizzate. Ma il codice del client ritorna sempre: Can't find ref: sprites/ship.gif
Sto facendo qualcosa di sbagliato nel mio approccio sopra per caricare l'immagine gif? Esiste un modo migliore e più semplice per fare un file di ricerca in questo caso?
Molte grazie per qualsiasi consiglio.
Soluzione
Il metodo getResource()
cerca il vostro classpath per trovare il file, probabilmente il sprite di directory non è nel classpath.
Prova aprire le proprietà del progetto -.> Java Build Path
, selezionare la scheda Libraries
e fare clic sul pulsante Add Class Folder
quindi selezionare la directory padre di sprite