Exportieren von einem Project

Maxwill

Mitglied
Hi Leute ,

ich hab mir ein kleines Game geschrieben und nun will ich es Exportieren aber wenn ich die .jar File Öffne wird zwar das JFrame angezeigt aber kein Inhalt. Ich denke das es an den Ressourcen liegt die nicht geladen werden.

Ich hab mir das so zusammen gebasstelt:

// zum speichern der Image Dateien
Java:
public static Image[] tileset_World_HexSelect = new Image[3];

// zum Laden der Image Daten
Java:
for(int i=0;i<tileset_World_HexSelect.length;i++){
tileset_World_HexSelect[i] = new ImageIcon("res/tileset_World_HexSelect"+i+".png").getImage();

// zum zeichen des Images in draw(Graphics g)
Java:
g.drawImage(World.tileset_World_HexSelect[1],x,y,width,height,null);


Im Eclipse kann ich es wunderbar ausführen aber wenn ich es Exportieren will geht es nicht mehr.

Ich hoffe Ihr könnt mir helfen .

Danke

Gruß Maxwill
 
Zuletzt bearbeitet:
Dateien, die mit in das .jar gepackt werden müssen über Class#getResource bzw. Class#getResourcesAsStream geladen werden, ansonsten werden sie nicht gefunden.
 
Du solltest am Besten das .jar mit 7 zip öffnen und schauen ob die Bilder drinne sind. Weiterhin solltest du dein Programm mit Fehlermeldungen ausstatten. Rufe dein Programm einfach über die CMD auf
 
Vielen dank schonmal.

lade sie nun mit

Java:
try {
	      String imagePath = "res/tileset_World_HexSelect"+i+".png";
	      tileset_World_HexSelect[i] = Toolkit.getDefaultToolkit().getImage(imagePath);
	      } catch (Exception e) {
	         System.err.println("tileset_World_HexSelect error:  " + e);
	      }

wenn ich sie nun Exportiere und dann wieder entpacke sind auch die Image Dateien drin , aber ich bekomme sie immer noch nicht angezeigt 🙁
Nur ein Leeres JFrame.
 
Was war an meiner Antwort so schwer zu verstehen? Es führt kein Weg dran vorbei.
Wenn du's in Code haben willst:
Java:
String imagePath = "/res/tileset_World_HexSelect"+i+".png";          
tilesetWorldHexSelect[i]=ImageIO.read(KlassenName.class.getResourceAsStream(imagePath));
//oder
tilesetWorldHexSelect[i]=ImageIO.read(KlassenName.class.getResource(imagePath));
 
Schon mal vielen dank für die Hilfe Kevin.

Das einzige was ich noch nicht verstehe ist der KlassenName.class

Ich hab gesehen das man das auch mit getClass() machen kann, klappt bei mir nicht da
getClass().getResourceAsStream(imagePath) null zurück liefert.


Java:
String imagePath = "res/tileset_World_Hex"+i+".png";
	 tileset_World_ground[i] = ImageIO.read(getClass().getResourceAsStream(imagePath));


Kannst du mir das evtl. mit dem KlassenNamen.class nochmal genauer erklären ?

Gruß
 
Java:
class KlassenName {
 public static void main(String[] args) {
  String imagePath = "/res/tileset_World_HexSelect"+i+".png";          
  tilesetWorldHexSelect[i]=ImageIO.read(KlassenName.class.getResourceAsStream(imagePath));
  //oder
  tilesetWorldHexSelect[i]=ImageIO.read(KlassenName.class.getResource(imagePath));
 }
}
Halt dei klasse in der du es aufrufst
 
Hi ,

Java:
World.class.getResource(imagePath)

oder 

World.class.getResourceAsStream(imagePath)

liefert mir null zurück 🙁

World ist die klasse in der ich die Images laden will.
 
Falscher Pfad. Wenn du meinen Code genau ansiehst, stellst du fest, dass bei mir der Pfad mit einem Slash anfängt, in Gegensatz zu deinem. Den Unterschied kannst du in der JavaDoc gerne nachlesen: [JAPI]Class#getResource(java.lang.String)[/JAPI]
 
Ich habe aus auch mit dem "/" versucht gibt mir aber kein anderes Ergebniss.

Java:
String imagePath = "/res/tileset_World_Hex"+i+".png";
tileset_World_ground[i]=ImageIO.read(World.class.getResourceAsStream(imagePath));

liefert mir auch null zurück

Gruß
 
Hi, habs gerade gefunden , ich muss beim Pfad das "res" weg lassen

also

Java:
String imagePath = "/tileset_World_Hex"+i+".png";

Gruß
 
Fliegt eine IllegalArgumentException oder ist das Bild null? Bei ersterem stimmt mit der Pfadangabe irgendwas nicht, bei letzterem stimmt mit den Dateien etwas nicht. Hasst du schon mal versucht mit geänderter Pfadangabe und nur getResource zu laden?

[EDIT]Na dann passts ja.[/EDIT]
 

Zurück
Oben