# Image reinladen funktioniert nicht.



## JeReT (7. Feb 2007)

Ich habe vor, ein Breakout spiel für Handies zu programmieren. Leider scheitere ich schon beim Laden eines Bildes.

Ich verwende:
- Eclipse 3.2.1
- EclipseME (neueste version, keine Ahnung, welche das ist)
- SUN WTK 2.2


meine frage wurde früher schoneinmal gestellt, blieb aber unbeantwortet: 
http://www.java-forum.org/de/viewtopic.php?t=22194&highlight=image

Ich hoffe mittlerweile weiß jemand, was zu tun ist.

Hier ein auszug aus dem Code:


```
private Image m_Player;
	public PlayerBar(  )
	{
		// ...
			
		try // try to create Playerpicture
		{
			m_Player = Image.createImage( "playerbar.png" );
			//m_Player = Image.createImage( this.getClass().getResourceAsStream( "playerbar.png" ) );
		}
		catch( IOException e)
		{
			System.out.println( "**** Player couldn't be initialized: " + e );
		}		
	}
```

als fehlermeldung kommt dann


> Running with storage root DefaultColorPhone
> **** Player couldn't be initialized: java.io.IOException
> Uncaught exception java/lang/NullPointerException: .
> Execution completed.



wenn ich stattdessen 

```
m_Player = Image.createImage( "/playerbar.png" );
```
schreibe, kommt die fehlermeldung


> Uncaught exception java/lang/IllegalArgumentException: .
> Execution completed.



wenn ich die auskommentierte version probiere kommt mit oder ohne slash die untere fehlermeldung.

Ich vermute mal, dass das Image an einer ganz bestimmten Stelle sein muss, damit es gefunden wird. Aber wo?
oder hab ich doch irgendwas im code falsch gemacht?


----------



## KSG9|sebastian (7. Feb 2007)

Wie wär's wenn du nicht nur die Exception fängst sondern auch den Stacktrace ausgibst? Dann kriegst du vielleicht auch die Information wo das Bild liegen muss?


----------



## JeReT (7. Feb 2007)

Das wär ja super. kannst du mir auch sagen, wie ich sowas mache?
Weil mit Java programmiere ich noch nicht sonderlich lange...


----------



## Jockel (7. Feb 2007)

catch( IOException e)
      {
         System.out.println( "**** Player couldn't be initialized: " + e );
         e.printStackTrace();
      }


----------



## KSG9|sebastian (7. Feb 2007)

```
private Image m_Player; 
   public PlayerBar(  ) 
   { 
      // ... 
          
      try // try to create Playerpicture 
      { 
         m_Player = Image.createImage( "playerbar.png" ); 
         //m_Player = Image.createImage( this.getClass().getResourceAsStream( "playerbar.png" ) ); 
      } 
      catch( IOException e) 
      { 
         System.out.println( "**** Player couldn't be initialized: " + e );
e.printStackTrace(); 
      }       
   }
```

so (e.printStackTrace()). Post mal die ganze Ausgabe.

Hast du mal überprüft ob die Images wirklich in der Jar liegen?

Gruß


----------



## JeReT (7. Feb 2007)

Das is ja einfacher als ich dachte...


also der stack trace sagt mir jetzt:


> at javax.microedition.lcdui.ImmutableImage.getImageFromStream(+15)
> at javax.microedition.lcdui.ImmutableImage.<init>(+20)
> at javax.microedition.lcdui.Image.createImage(+8)
> at gameobjects.PlayerBar.<init>(+42)
> ...


mein problem ist, dass ich leider nicht weiß, was er mir damit sagen will.

und das mit der .jar datei ist auch so ne Sache...
Ich hab schon danach gesucht, aber scheinbar erstellt der mir gar keine .jar datei.
Falls doch, dann aber nicht in der verzeichnisstruktur des projekts.
Die einzigen .jar files, die ich im projekt hab sind einige libraries...


----------



## KSG9|sebastian (7. Feb 2007)

Das sit bestimmt nicht der komplette Stacktrace
Leg mal dein Image unter classes ab und versuch es mit Class#getResourceAsStream zu laden.


----------



## JeReT (7. Feb 2007)

Da hab ich das bild auch schon drinnen gehabt. Hat nix geholfen.

Aber ich bin grad drauf gekommen, wie ich theoretisch jarfiles erstellen kann.

(mit dem kToolbar ein projekt erstellen, die src und res files rein kopieren und builden)

Da kommt dann aber ne fehlermeldung mit der überschrift "Couldn't find JDK"

da drunter steht:
"In order to compile you need to use the full J2SE SDK.
In order to use this feature please install J2SE
SDK version 1.4 or later and reinstall the J2ME Wireless Toolkit."

Ich bin mir jetzt nicht sicher, ob ich dieses J2SE SDK hab... von Java hab ich soviele bausteine schon runtergeladen, dass ich langsam den überblick verliere... nya... aber scheinbar muss ich nochmal was installieren (geht mir langsam auf den keks, diese tausend installationen für eine sache).

Edit: Ich habs bei SUN mal gesucht: scheinbar gibts kein J2SE SDK. Oder Sun nennt es anders!?


----------



## KSG9|sebastian (7. Feb 2007)

Java SDK 1.4.2 nennt sich's


----------



## JeReT (13. Feb 2007)

Hab jetzt endlich die Zeit gefunden, mir das J2SE SDK zu installieren und zu probieren, ob es jetzt geht. Die antwort lautet: Nein!

wenn ich es über die kToolbar starte, dann kommt genau die gleiche Fehlermeldung.

Weiß denn keiner, was ich tun muss, damit ich ein Image im Handy anzeigen lassen kann?


----------



## Mr. Nice Guy (12. Mrz 2007)

Das gleiche Problem habe ich mit dem WTK2.2/2.5 Emulator auch. Aber wenn ich dsa Packet von Hand erstelle gehts auf dem Handy. 

Ist echt komisch obwohl die die die Daten im root der Jar sind findet der Emulator die Daten nicht mit "/Daten.dat".

Kennt jemand das Problem mti dem Emulator? bzw den Ort wo man da was einstellen muss.


----------



## ctc (9. Jul 2007)

siehe Link

http://www.java-forum.org/de/viewtopic.php?t=22194&highlight=image


----------



## JimPanse (27. Jul 2007)

Bist du dir auch sicher dass das Image im root deines Projektes liegt????

Ich würd am Anfang immer den Pfad kontrollieren! Vielleicht liegt es in einem Ordner...


----------



## horschd77 (13. Sep 2007)

Das Problem hab ich auch grad gehabt.
Bild ins res-Verzeichnis und beginnend mit nem slash (/) createn. 

Bei mir hats so geklappt.


----------

