2 Stimmen

Toolkit.getImage() aus dem Ordner src

Ich versuche, ein Bild aus dem Ordner src/ in einem Paket abzurufen, aber ich habe keinen Erfolg.

nekoPics[i] = tk.getImage(getClass().getResource(String.format("resources/pracs/neko/%s", nekosrc[i])));

Hat jemand einen Vorschlag?

3voto

Jon Skeet Punkte 1325502

Wird er in den Bereich kopiert, in dem Ihr Code erstellt wird? Ist es in der src Verzeichnis hilft nicht, wenn sich die Klasse zur Ausführungszeit in einem bin Verzeichnis (oder eine jar-Datei).

Beachten Sie auch, dass, wenn Ihre Klasse in einem Paket ist, dann Class.getResource wird standardmäßig relativ zu diesem Paket funktionieren. Wenn Ihr Paket also foo.bar ist, wird es nach foo/bar/resources/pracs/neko/whatever . Wenn Sie es absolut machen wollen, können Sie entweder ClassLoader.getResource oder setzen Sie ein führendes / am Anfang der Zeichenkette:

String resource = String.format("/resources/pracs/neko/%s", nekosrc[i]);
nekoPics[i] = tk.getImage(getClass().getResource(resource));

o

String resource = String.format("resources/pracs/neko/%s", nekosrc[i]);
nekoPics[i] = tk.getImage(getClass().getClassLoader().getResource(resource));

Natürlich, wenn die reousrces Verzeichnis ist eigentlich relativ zu Ihrem Paket, sollten Sie das nicht tun :)

1voto

Joachim Sauer Punkte 290477

Wenn Sie getClass().getResource() mit einem relativen Pfad (d. h. einem Pfad, der nicht mit / ), wird der Pfad wie folgt interpretiert bezogen auf das Paket der Klasse die Sie zum Laden der Ressource verwenden.

Wenn Sie also diesen Code in der Klasse mypackage.MyClass und fordert dann an resources/pracs/neko/something wird tatsächlich versuchen zu finden mypackage/resources/pracs/neko/something relativ zu Ihrem Klassenpfad.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X