Dateien aus der ausgeführten .jar auslesen

M4D-M4X

Bekanntes Mitglied
Hallo Leute,

ich befasse mich heute schon den ganzen Tag damit, wie man aus einer .jar Datei eine Datei(.png bzw. mp3) ausliest.

Habe bereits sämtliche Tutorials gelesen, aber es hat mir nicht weitergeholfen.

Mit der getResource Methode funktioniert es... zumindest in Eclipse selbst, aber wenn ich das Projekt in eine .jar packe und es ausführe, liefert er mir immer null zurück.

Hier mal ein wenig Code zum ansehen:

Java:
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;

import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;


public class test extends JFrame{

	test() throws IOException, URISyntaxException{
		this.setLayout(null);
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.setBounds(0,0,1024,768);
		this.setLocationRelativeTo(null);
		
		
		System.out.println(getClass().getResource("/data/wacas.png").toURI().getPath());
		
		/*BufferedImage bfdimg = ImageIO.read(new File(test.class.getResource("/wacas.png").toURI().getPath()));
		JLabel label = new JLabel(new ImageIcon(bfdimg));
		label.setBounds(0,0,480,256);
		this.add(label);*/
		
		this.setVisible(true);
	}

	public static void main(String[] args) throws IOException, URISyntaxException {
		test blubb = new test();
	}
}


Zu sagen ist vllt. noch, dass der Ordner "data" direkt im Projektverzeichnis liegt und nicht in bin, welcher dort immer eine NullPointer Exception verursacht.

Kann man so überhaupt den Pfad auslesen, oder muss man die Sache ganz anders angehen?


Schön Grüße
The M4D one
 
gesagt, getan.

Funktioniert nur Leider immer noch nicht...

Das interessante ist, er liefert nur null zurück und keine NullpointerException.
Die Exception kommt erst zustande, wenn ich den Pfad falsch eingebe wie z.b. "/dat/wacas.png"
Oder ist es vllt. ein Bug von java 64 Bit, das ich nutze ?

Es muss außerdem doch auch möglich sein auf die Manifest des jars zugreifen zu können oder ?
 
Ok hab jetzt mal ein wenig zur URI recherchiert und festgestellt, dass das Mist war, geb ich zu ^^

Jetzt nutze ich auch die Methode getResourceAsStream und die Grafik wird in meiner .jar Datei angezeigt. Nur Eclipse selbst will den Pfad so nicht einsehen und gibt mir input == null zurück.

Wenn ich den data Ordner jedoch ins bin Verzeichnis kopiere geht es auch mit Eclipse.
Gibts da ne Lösung, dass ich den Ordner nur einmal im Hauptverzeichnis vom Projekt habe und beides miteinander harmoniert?.

geändert habe ich im Code nur die Zeile 22:
Java:
BufferedImage bfdimg = ImageIO.read(getClass().getResourceAsStream("/data/wacas.png"));


Grüße
 

Zurück
Oben