Bilder richtig laden

Hallo,

eine kurze Frage:

Bisher hab ich die texturen für meine Spiele immer mit ImageIO.read(getClass().getResource("example.png")); aus der src-Datei des Projekts geladen.

Nun möchte ich, dass er das Bild aus einem Ordner im Desktop lädt:
hero = ImageIO.read(getClass().getResource("C:/Users/MeinNameGehtEuchNixAn;)/Desktop/PixelRPG/Held.png"));

Mir zeigt Eclipse dabei aber immer nur diesen fehler an:

Exception in thread “main” java.lang.IllegalArgumentException: input == null!
at javax.imageio.ImageIO.read(Unknown Source)
at Game$Hero.(Game.java:267)
at Game.running(Game.java:103)
at Game.(Game.java:53)
at Main.main(Main.java:4)

Wie lade ich das ganze richtig?

MfG,
DVDB

Mit
ImageIO.read(new File(“C:/Users/MeinNameGehtEuchNixAn/Desktop/PixelRPG/Held.png”));
würde das wohl gehen, aber das sollte man NICHT machen! (Das ist genau das Gegenteil von dem, was alle sonst immer erreichen wollen… Welchen Zweck soll das erfüllen? Das läuft dann nur noch bei Leuten, deren Name uns nix angeht…)

Jo, läuft, Danke!
Wie mache ich “C:/Users/MeinName…” jetzt so variable, dass das Spiel als .jar-Datei auch auf dem Computer meiner Freunde “Unbenannt” und “SeineMumWarZuFaulUmSichEinenNamenAuszudenken” läuft, sofern sie die resourcen auf dem Desktop haben?

na so wie bisher : über getResource und relativer pfad
absolute pfade sollte man grundsätzlich vermeiden

Pack’ die Bilder mit in die JAR! (Was soll das ganze?)

Das Ziel ist es eine .jar-Datei zu machen. Dabei soll er die Resourcen finden, damit ich das ganze Spiel versteilen kann. Beim kompilieren bekomm ich jedoch immer nur eine .jar-Datei und der Rest verschwindet spurlos…

dann sind deine build-einstellungen falsch
anstatt die bilder in deinen src-ordner zu packen erstell einen weiteren ordner, z.b. rsc und füg diesen dem build-path hinzu damit er dann auch im jar landet

der fehler ist also nicht dein code sondern der build wie dein jar zusammen gepackt wird
normalerweise werden nämlich der source-files compiled und in einen weiteren ordner, meist bin, dist oder debug (je nach build-setting) gepackt und diese dann gepackt
resourcen wie bilder die im src liegen werden standardmäßig nicht mitkopiert und landen daher auch nicht im jar

was auch möglich wäre aber unsauber ist die resourcen in ein extra jar und das im manifest des hauptjar im cp mit einzutragen

Was heißt: verschwindet spurlos. Hast du mal in die jar-Datei reingeschaut, ob die Bilder dort drin liegen? Wenn Sie dort nicht sind, dann beschreibe mal wie genau du die jar erstellst.

Hier steht so ziemlich alles, was man über das Thema wissen sollte: http://wiki.byte-welt.net/wiki/Grafikdateien_laden_und_anzeigen

dann sind deine build-einstellungen falsch
anstatt die bilder in deinen src-ordner zu packen erstell einen weiteren ordner, z.b. rsc und füg diesen dem build-path hinzu damit er dann auch im jar landet

der fehler ist also nicht dein code sondern der build wie dein jar zusammen gepackt wird
normalerweise werden nämlich der source-files compiled und in einen weiteren ordner, meist bin, dist oder debug (je nach build-setting) gepackt und diese dann gepackt
resourcen wie bilder die im src liegen werden standardmäßig nicht mitkopiert und landen daher auch nicht im jar

was auch möglich wäre aber unsauber ist die resourcen in ein extra jar und das im manifest des hauptjar im cp mit einzutragen

So sieht das jetzt aus:

Game
—settings
—bin
—res
------music
------textures
---------Game // Der Ball und der Schläger
---------letters // hab mir für das spiel eigene Ziffern gemalt
---------Menu // Bilder für die Köpfe…
—src

der fehler ist also nicht dein code sondern der build wie dein jar zusammen gepackt wird
normalerweise werden nämlich der source-files compiled und in einen weiteren ordner, meist bin, dist oder debug (je nach build-setting) gepackt und diese dann gepackt
resourcen wie bilder die im src liegen werden standardmäßig nicht mitkopiert und landen daher auch nicht im jar

Wie genau stell ich das ein?
Mit Project → Properties → Java Build Path → … ?

Was heißt: verschwindet spurlos. Hast du mal in die jar-Datei reingeschaut, ob die Bilder dort drin liegen? Wenn Sie dort nicht sind, dann beschreibe mal wie genau du die jar erstellst.

File → Export → Java → und eine der Möglichkeiten…

[QUOTE=DVDB]So sieht das jetzt aus:

Game
—settings
—bin
—res
------music
------textures
---------Game // Der Ball und der Schläger
---------letters // hab mir für das spiel eigene Ziffern gemalt
---------Menu // Bilder für die Köpfe…
—src[/quote]
sieht soweit sauber aus
jetzt muss nur noch der rsc-ordner in den build-path damit der dann auch im exportierten jar landet

[QUOTE=DVDB;78382]Wie genau stell ich das ein?
Mit Project → Properties → Java Build Path → … ?[/quote]
das müssten dir unsere eclipse-profis erklären
ich selber bin nur eher hobby-entwickler und nutze keine IDE

naja, du willst ja das man deine jar auch „ausführen“ kann, also wählst du „Runnable Jar File“ aus
achte darauf die richtige main-class zu setzen müsste irgendwo unter project-settings stehen