2016-05-02 5 views
0

verwenden Ich habe eine ziemlich einfache Java-Programm mit der folgenden Struktur gehen:(IntelliJ) Maven fügt png Ressource Glas, sie aber nicht

/src/main/java/ (all the classes in here) 
/src/main/resources (marked as resource root in IntelliJ, one png file in here) 
/pom.xml 

Die Art, wie ich meine Maven-Projekt bauen, ist ein bisschen ein Workaround (weil ich das Artefaktsystem von IntelliJ nicht zum Funktionieren bringen konnte). Ich habe eine run/debug-Konfiguration, die das Projekt mithilfe der Befehlszeile erstellt: install (ich hoffe, ich erkläre das ausreichend gut).

Alles funktioniert gut, außer für die Aufnahme der Datei .png. Die seltsame Sache ist, dass die Datei tatsächlich zu der ausführbaren Datei jar hinzugefügt wird, aber irgendwie scheint das endgültige Programm es überhaupt nicht zu verwenden. Es ist zugänglich über:

BufferedImage image = ImageIO.read(new File(getClass().getResource(url).toURI())); 

Wieder funktioniert das endgültige Programm einwandfrei, außer dass das Bild an keiner Stelle sichtbar ist. Irgendeine Hilfe?

Edit: Die png im Stammordner der jar befindet, und die bereitgestellte URL ist eine Zeichenfolge, die einfach der Name der png Datei. Ich sollte wahrscheinlich hinzufügen, dass das Programm in der IntelliJ-Run-Umgebung (einschließlich der png) gut funktioniert, aber nicht mit der ausführbaren Datei jar.

+0

Wo im Glas ist es? Was ist der angegebene Wert von "URL"? – Samuel

+0

Ich habe den ursprünglichen Beitrag entsprechend bearbeitet. – BlueTooth4269

Antwort

1

die Antwort gefunden, die hier für mich gearbeitet: Access .png image in .jar file and use it

img = ImageIO.read(MapObject.class.getResource(url));

statt

ImageIO.read(new File(getClass().getResource(url).toURI()));

, da das Bild in einem jar gelegen war zu verwenden Haben .

+1

Ah! Es war die toURI(), die Dinge verpfuschte. Im Allgemeinen vermeidet 'getResourceAsStream()' solche Probleme. – Samuel