Ein executable Jar-file und die Programm-benötigten Dateien

h3xagon

Grünschnabel
Hallo Tutorials-Team,

ich programmiere zwar schon seit geraumer zeit java, finde aber meine Frage gehoert eher zu den Grundlagen:

Wenn ich eine executable jar file erstelle und diese Daten benötigt (hier bilder) dann muss ich die Bilder in das selbe Verzeichnis wie die *.jar datei schieben.

ich habe also:

(1) private final String ICONS ="data"+File.seperator+"test.png";

dann muss die verzeichnisstruktur so aussehen:

C:\test\runnable.jar
C:\test\data\test.png

jetzt meine Frage:
Ich kann die daten ja ohne Problem mit ins jarfile packen, aber kann ich sie auch von dort direkt auslesen? Und wenn ja, wie muss dann die oben geschriebene codezeile (1) aussehen? Ziel ist, dass ich am ende nur eine einzige Jar datei habe

Ich koennte das Archiv auch bei programmstart entpacken, und nach Nutzung löschen. Aber erstens gefällt mir dass nicht so gut und zweitens müsste ich euch in einem anderen Thread fragen wie man jar-Files packen kann :)

Vielen Dank im Vorraus für eure Hile

Gruß

Hexa
 
Very nice :)

Code:
import java.net.URL;

import javax.swing.ImageIcon;
import javax.swing.JFrame;

public class Test {

	static Test t;
	public static void main(String args[])
	{ 
t = new Test();
	  t.machMirDenFrame("Frame mit Bild",createImageIcon("lol.jpg"));
	}
	
	public ImageIcon createImageIcon(String aFilename)
	{
      URL imgURL = Test.class.getResource(aFilename);
      if(imgURL != null)
      {
         return new ImageIcon(imgURL);
         
      }
      else
      {
         System.err.println("cannot load image " + aFilename);
         
         return null;
      }
	      
	}
	public void machMirDenFrame(String t, ImageIcon img)
	{
		JFrame m = new JFrame(t);
		m.setIconImage(img.getImage());
        m.setVisible(true);
        m.setSize(500,500);
	}
}

Wenn man diese Klasse in ein executable jarfile macht und ein Bild: "lol.jpg" mit in das jarfile packt, laed die Klasse das Bild aus dem Archiv!

Danke vielmals

WICHTIG:

ändert man die Ziele oben in URL imgURL = this.getClass().getResource(aFilename); geht man vom rootDir im jar.file aus. andernfalls von der Location der benutzten klasse (hier Test.class")
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück