File öffnen

Tagamoga

Mitglied
Hallo allerseits.

Ich hoffe ich bin hier im richtigen Forum.

Ich habe unter Eclipse Ganymede ein mini-projekt offen. Direkt unter dem src-Folder habe ich eine Datei Namens "MyData.xml". nun versuche ich diese zu öffnen mit:

Code:
File f = new File("hibernate.cfg.xml");

Eclipse behauptet allerdings, diese Datei existiert nicht. Natürlich könnte ich den absoluten Pfad angeben, aber das ist ja nicht Sinn der Sache.

Wie ändere ich den Funktionsausruf oder das Projekt, damit ich diese Datei öffnen kann?

Danke im Vorraus,
Taggi
 
Wenn du das so schreibst, wird in deinem Projektverzeichnis gesucht.
Jedoch wird deine Pfadstruktur vermutlich so aussehen:

"workspace/dein_projekt/src/deine_xml".

Du musst also auch in den Ordner src gehen. Versuch mal folgenden Code:

Java:
File f = new File("src/hibernate.cfg.xml");

Für eine weitere schnelle Abhilfe zeigt dir folgender Code, wo du dich befindest:

Java:
File f = new File("./");
System.out.println(f.getAbsolutePath());
 
Wobei allerdings der Ordner "./" das selbe Verzeichniss ist in dem sich das fertige Project als Jar befinden würde, d. H. mit sehr hoher Warscheinlichkeit existiert dann der Ordner scr nicht mehr, da sich die wenn überhaupt ja in der jar befinden würden.
 
Das ist richtig! Sollte sich die gesuchte Datei in der jar-Datei befinden, müsste man den Pfad entsprechend anpassen. Aber das wäre ein anderes Thema.
 
Ja, ich wollte aber damit eigendlich nur sagen, dass es eine schlechte Idee ist die Datei in der scr zu belassen, da die ja dann sehr warscheinlich nichtmehr existiert.
 
Wenn die Datei in src ist, ist diese ja auch im classpath.

Daher müsste ein
Java:
this.getClass().getClassLoader().getResource("hibernatecfg.xml");
ausreichen um die Url zur Klasse aus dem Classpath zu laden.

Oder man holt sich gleich den Stream:
Java:
this.getClass().getClassLoader().getResourceAsStream("hibernatecfg.xml");
 
Ok... so langsam bin ich mehr als nur irritiert...

Code:
this.class.getClassLoader().getResource("hibernatecfg.xml");

gibt mir einen null_pointer zurück.

Code:
File f = new File("src/hibernate.cfg.xml");

ebefalls

Code:
File f = new File("./");
System.out.println(f.getAbsolutePath());

gibt mir "C:/eclipse" zurück...

Die Datei wird im fertigen Jar mit exportiert.
 
Jetzt bin ich irritiert: führst du den Code direkt über Eclipse aus oder über eine ausführbare Jar, in der sich auch die zu öffnende Datei befindet?
 
Zuletzt bearbeitet:
Sorry, jar ist das falsche Wort. Bitte habt Geduld mit mir.

Also... es ist ein Plugin, das Daten für ein andere Projekt bereit stellt. In diesem Plugin existiert unter dem src-Ordner diese xml, die ich öffnen muss.

Nur irgendwie wird immer behauptet, sie existiert nicht. Ich öffne diese XML nur im Plugin selbst nicht im übergeordnetem Projekt.
 
Also ein eclipse Plugin?

Hast du im Jar geschaut ob die XML-Datei dort vorhanden ist?

Ich würde empfehlen sie in ein richtiges Package zu legen. Dann sollte das mit dem ClassLoader auch entsprechend funktionieren.

Übrigens: Java hat keine Pointer ;)
 

Neue Beiträge

Zurück