Hallo zusammen,
ich hab mal wieder eins meiner Lieblingsprobleme, nur diesmal kann ich mich nicht drum herummogeln. Eigentlich ist das Szenario ganz einfach: ich möchte eine Datei nutzen, die im selben Verzeichnis liegt wie meine Klasse. Code:
Spacer1 = new JLabel(new ImageIcon(„Spacer.gif“));
Das .gif liegt im selben Verzeichnis wie die Klasse - und es funktioniert nicht. Es kommt nichtmal eine „FileNotFoundException“ oder etwas ähnliches. Ich muss entweder einen absoluten Dateipfad eingeben in der Art von
Spacer1 = new JLabel(new ImageIcon(„C:/Spacer.gif“));
was diesmal aber nicht geht, da das ganze nicht nur bei mir laufen soll, oder ich muss das .gif in die „bin“ von meinem guten alten Sun1Studio packen - dann geht es wie im ersten Codebeisiel beschrieben. Wie kann ich denn einfach auf Dateien zugreifen, die im selben Verzeichnis liegen?
Dafür gibt es doch sicher eine Lösung, oder?
Gruß
Schorsch
Hallo Schorsch,
[…] Wie kann ich denn einfach auf Dateien
zugreifen, die im selben Verzeichnis liegen?
Dafür gibt es doch sicher eine Lösung, oder?
Blöde Gegenfrage: Schonmal…
Spacer1 = new JLabel(new ImageIcon("./Spacer.gif"));
probiert? Müsste IMHO gehen…
CU DannyFox64 *g*
Moin
ich möchte eine Datei nutzen, die im
selben Verzeichnis liegt wie meine Klasse.
Liegt die Klasse in einem Package ? Wo ist das prompt wenn „java“ aufgerufen wird ?
Die Methode:
InputStream Class.getResourceAsStream(String name)
könnte auch helfen, besonders wenn man mit jar-Dateien arbeitet.
cu
Das ging ja fix 
Spacer1 = new JLabel(new ImageIcon("./Spacer.gif"));
Ja,
das war auch mein erster Gedanke dazu. Aber das hilft nicht - er macht genausowenig wie ohne das „./“ davor.
Liegt die Klasse in einem Package ?
Nein, liegt sie (bisher) nicht.
Wo ist das prompt wenn „java“ aufgerufen wird?
Öhm - ich weiss leider nicht genau, was du von mir wissen willst. Ich rufe meine Programme eigentlich nie manuell auf, sondern führe sie direkt in meinem Editor aus.
Die Methode:
InputStream Class.getResourceAsStream(String name)
Danke, werde mich damit auseinandersetzen.
Gruß
Schorsch
Problem halb erledigt, vielen Dank!
Hallo Leute,
vielen Dank, ihr habt großartige Hilfe zur Selbsthilfe geleistet. Ich habe eben das Programm mal aus der Kommandozeile gestartet - und es funktioniert genau wie ich es wollte, auch ohne die „./“ vor dem eigentlichen Dateinamen. Hat mich mein geliebtes Studio mal wieder gefoppt 
Nochmal danke, und ich werde demnächst mal mehr mit Packages arbeiten, weil das auch so manches andere Problem mit meiner liebsten Entwicklungsumgebung löst.
Bis später
Schorsch
Moin
Hat mich mein geliebtes Studio mal wieder gefoppt 
Dein Studio führt die Zeile:
c:\bin\java -classpath - deineklasse
aus. Wo dann das Arbeitsverzeichniss dann ist kann man nur raten.
Nochmal danke, und ich werde demnächst mal mehr mit Packages
arbeiten, weil das auch so manches andere Problem mit meiner
liebsten Entwicklungsumgebung löst.
Die Packages werden dir das Dateiladen aber erschweren. Pack alle Bilder in ein Verzeichniss (/imgs/ ?) und lad von da aus. Bei jars muss man über Class.getRe… gehen, anders kommt man nicht sinnvoll an die Dateien in der jar ran.
cu
Moin, moin,
Moin
Hat mich mein geliebtes Studio mal wieder gefoppt 
[…]
Die Packages werden dir das Dateiladen aber erschweren. Pack
alle Bilder in ein Verzeichniss (/imgs/ ?) und lad von da aus.
Bei jars muss man über Class.getRe… gehen, anders kommt man
nicht sinnvoll an die Dateien in der jar ran.
Wieso sollte man explizit ein Verzeichnis anlegen. Bei mir funktioniert das bisher mit einem Package wunderbar. Das hat dann aus meiner Sicht nichts mit den Jars zu tun, sondern damit, dass das entsprechende Package (besser Verzeichnis) in den Classpath aufgenommen wird.
Gruß,
Frank