Pfadermittlung

Status
Nicht offen für weitere Antworten.

Xeres

Mitglied
Hallo,

ich habe leider auf mein Problem keine Antwort über die Suchfunktion gefunden, also schreibe ich es hier rein.
Ich möchte den Pfad meiner JAR-Datei ermitteln um mit diesem Pfad eine XML-Datei anzusprechen die im selben Verzeichniss liegt. Die ermittlung des Pfades sieht folgendermaßen aus:

Code:
System.out.println(getClass().getResource("").toString()+"einstellungen.xml" );

Wenn ich mein Programm aus Eclipse heraus aufrufe, arbeitet es wunderbar...

Wenn ich es allerdings als .jar exportiere und es dann über die Kommandozeile aufrufe bekomme ich folgenden Fehler, sobald er versucht die Zeile von da oben auszuführen:

Exception in thread "main" java.lang.NullPointerException


Was genau fehlt? Wieso bekomme ich hier eine Null-Pointer Exception?
 

Xeres

Mitglied
@ meez:

Was bitte soll ich aus deinem Posts ziehen können? Ich bitte darum, das so unnötige Beiträge vermieden werden...



@ all:

Um meine Fragestellung noch etwas zu erweitern:

Warum läuft das Programm, wenn ich es aus Eclipse heraus starte ohne Probleme, aber nach einem .jar export nicht mehr?
 

dotlens

Top Contributor
ich könnte mir vorstellen das getClass() null zurückliefert...
Teste das mal mittels:
Code:
if (getClass() == null)
System.out.println("geClass() liefert null zurück");
 

meez

Top Contributor
Xeres hat gesagt.:
Was bitte soll ich aus deinem Posts ziehen können? Ich bitte darum, das so unnötige Beiträge vermieden werden...
Bitte abgelehnt... :!:

Was sollte ich dir den sonst sagen...Entweder gibt getClass null zurück oder getResource(""). (Ich tippe mal aufs zweite...)
 

Bleiglanz

Gesperrter Benutzer
Warum läuft das Programm, wenn ich es aus Eclipse heraus starte ohne Probleme, aber nach einem .jar export nicht mehr?

weil es eben einen Unterschied macht, ob die Klasse vom Classloader aus einem jar geladen wurde oder aus dem Dateisystem

Code:
System.out.println(getClass().getResource("").toString()+"einstellungen.xml" );

was willst du machen? Ist einstellungen.xml ebenfalls im .jar drin?!

eher getRessource("/")....
 

Xeres

Mitglied
@ dotlens:

Ja es liefert null zurück. Aber warum? Was muss ich ändern damit ich hier das gleiche Resultat erziehle, wie wenn ich es aus Eclipse starten würde?


@ Bleiglanz:

Zu dem was ich machen will:

Die Datei einstellungen.xml ist NICHT in der JAR Datei drin. Sie liegt extern, aber im selben Verzeichniss wie meine JAR Datei. Ich möchte also meine Einstellungen für mein Programm aus der einstellungen.xml laden... Und mit getClass().getResource("").toString() erhalte ich auch den Pfad zu meine JAR Datei. Allerdings funktioniert das nur wenn ich die Anwendung aus Eclipse heraus starte.



Jemand ne Idee?
 

dotlens

Top Contributor
du kannst auch relative pfade verwenden.
wenn du einfach sagst: lade "einstellungen.xml" sucht er im sleben verzeichnis, in welchem das jar gestarted wurde...
Code:
File einstellungen = new File("einstellungen.xml");
 

Xeres

Mitglied
Danke für die Antwort. Leider klappt das auch nur wenn ich es aus Eclipse heraus starte. Wenn ich es aus der Kommandozeile starte passiert folgendes:


java.io.FileNotFoundException: C:\einstellungen.xml (Das System kann die angegeb
ene Datei nicht finden)


Hier mein Aufruf, damit das ganze ein wenig verdeutlicht wird:

C:\>java -jar c:\daten\statistik.jar


Vielleicht muss ich ja noch irgendwelche Classpath angeben?


Oder hat jemand noch eine Idee, was ich da falsch mache?




EDIT:

Habe eben etwas festgestellt... Wenn ich den Aufruf folgendemaßen ändere, klappts:

C:\daten>java -jar statistik.jar


Ist zwar eine Lösung aber nicht gerade elegant. Kann mir einer eine Lösung nennen bei dem auch mein Aufruf weiter oben funktioniert?
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben