Pfadangabe auf Bilddateien außerhalb der .jar

Epitaph

Mitglied
Hallo,

ich bin gerade dabei das 2D-Spieleprogrammierungstutorial, das ich hier auf dem Board gefunden habe, durchzugehen und wollte meine Zwischenergebnisse in eine Jar packen.
Beim Ausführen wird das Fenster ganz normal gestartet doch findet das Programm die .gif Datei nicht mehr. Nun wollte ich wissen, wie ich den Pfad angeben muss. Die .jar Datei befindet sich mit dem Ordner "src" in einem Ordner und in "src" befindet sich die .gif Datei.

Hier der Code:

Java:
  ...
    BufferedImage[] ship = loadPics("src/Ship1.gif", 3);
  ...
  private BufferedImage[] loadPics(String path, int pics)
  {
    BufferedImage[] anim = new BufferedImage[pics];
    BufferedImage source = null;
    
    URL pic_url = getClass().getClassLoader().getResource(path);

    try
    {
      source = ImageIO.read(pic_url);
    }
    catch(IOException e)
    {
    }
    
    for(int i=0; i<pics; i++)
    {
      anim[i] = source.getSubimage(i*source.getWidth()/pics, 0,
              source.getWidth()/pics, source.getHeight());
    }
    
    return anim;
  }

Und die Fehlermeldung:
Code:
Exception in thread "main" java.lang.IllegalArgumentException: input == null!
        at javax.imageio.ImageIO.read(Unknown Source)
        at GamePanel.loadPics(GamePanel.java:138)
        at GamePanel.doInitialisation(GamePanel.java:50)
        at GamePanel.<init>(GamePanel.java:40)
        at GamePanel.main(GamePanel.java:26)
Die Zeilen in der Fehlermeldung stimmen natürlich nicht aber zeigen eigentlich nur auf:
Java:
source = ImageIO.read(pic_url);
Habs mit verschiedenen Pfadangaben versucht und im Internet geschaut aber nichts nützliches gefunden :/
 
Zuletzt bearbeitet:

Epitaph

Mitglied
Hm ok danke. Ist aber ziemlich blöd wenn man mal nen Programm schreiben will, bei dem man bestimmte .txt Dateien oder Bilder austauschen können soll :/
Aber vllt hat ja noch jemand ne Alternative
 

Epitaph

Mitglied
Ok ich werds ma mit na Classpath in der Manifest versuchen. Hab mit der Manifest allerdings noch nichts gemacht und so. Ma schaun obs klappen wird^^
Newbie würd ich mich zwar net nennen aber unwissend denn ich weiß eig noch netma genau was ne Classpath is bzw. wo se genau hinzeigen soll xD
Aber wie gesagt ma schaun^^
 

mvitz

Top Contributor
Mit Manifest ist eigentlich relativ einfach.

z.B.
Code:
Class-Path: .

sagt aus, dass der Ordner, in dem das JAR File liegt mit im Classpath ist. Wenn jetzt dort ein Bild abc.jpg liegt, kann man das über

Java:
getClass().getResourceAsStream("/abc.jpg");

laden.
 
T

troll

Gast
wenn man ein JAR hat und daneben austauschbare daten liegen haben will kann man den absoluten pfad ganz einfach ermitteln ...

Java:
File dir=new File(this.getClass().getProtectionDomain().getCodeSource().getLocation().toURI()).getParentFile();
sinnvoll wäre die entsprechenden files natürlich noch in sub-dirs zu organisieren ... aber das wäre jetzt das dir in dem das JAR liegt ... ohne getParentFile() würdest du nur direkt ein objekt auf das JAR selbst bekommen ...
 

Epitaph

Mitglied
So danke für die Hilfe. Hat nu mit "Class-Path: ." in der Manifest geklappt :)
Und das mit dem Verzeichnis herausfinden is auch ganz net aber da muss ich mir den Code nochma genauer anschaun ;D
Vielen Dank euch!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Input/Output Pfadangabe in .jar Datei Allgemeine Java-Themen 2
W Relative Pfadangabe in JEditorPane zur lokalen Datei Allgemeine Java-Themen 2
E File.mkdir Probleme mit rel. Pfadangabe?! Allgemeine Java-Themen 2
G Pfadangabe mit getResource Allgemeine Java-Themen 7
I Pfadangabe zu Files Allgemeine Java-Themen 2
K Pfadangabe validieren mit regexp Allgemeine Java-Themen 20
F Pfadangabe bei Processbuilder Allgemeine Java-Themen 4
M Pfadangabe Allgemeine Java-Themen 2
MaxG. Bilddateien richtig einbinden Allgemeine Java-Themen 9
D Bilddateien werden nicht geladen! Allgemeine Java-Themen 2
S Downloadmanager für Bilddateien Allgemeine Java-Themen 4
Drachenbauer Wie kann ich einer existierenden Enum von außerhalb veränderte Werte zuweisen? Allgemeine Java-Themen 5
M Variable außerhalb Klasse definierbar? Allgemeine Java-Themen 2
X Registrierung eines Ecore-Models außerhalb der Eclipse-Umgebung Allgemeine Java-Themen 0
M Input/Output Mausklick außerhalb des Frames registrieren Allgemeine Java-Themen 2
S Außerhalb der paintComp() färben Allgemeine Java-Themen 2
S grafische Textausgabe außerhalb eines Frames Allgemeine Java-Themen 5
A Methoden laufen im Konstruktor, außerhalb allerdings nicht Allgemeine Java-Themen 2
A kann nicht auf properties außerhalb jar zugreifen Allgemeine Java-Themen 3
J jar starten außerhalb der IDE Allgemeine Java-Themen 6
D Jar außerhalb Eclipse auf Stick oder CD starten Allgemeine Java-Themen 7
S Mausklick außerhalb des Programms erzeugen? Allgemeine Java-Themen 23
F Objekttyp in schleife angeben oder außerhalb? Allgemeine Java-Themen 8
S Klassen aus JDK 1.5. außerhalb von 1.5. nutzen Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben