Java-system.getProperty(“user.dir") gibt Falsches Ergebnis in ubuntu
Entwickle ich eine Java-Anwendung, die in der Lage ist zu laufen, cross-Plattform, mit der Bedingung in die JRE-version mindestens 1.6.0.14. Alles funktioniert auf einem Windows-Rechner (JRE1.6.0.14), aber unerwünschte Ergebnis in Ubuntu 8.04 mit JRE1.6.0.14.
Fand ich den Fehler hier:
Document doc = docBuilder.parse (new File("webservices.xml"));
Auf dem Windows-Rechner, alles funktioniert ok, der docBuilder wird, finden Sie die Datei, an dem die Anwendung liegt bei.
Beispiel: wenn mein Antrag liegt bei C:\myApp\start.jar es beziehen webservives.xml bei C:\myApp\webservices.xml (dies bedeutet, es wird immer finden Sie im richtigen Verzeichnis, egal wo ich meinen Anwendungsordner)
Aber in Ubuntu 8.04 das es nicht funktioniert.
Ich bin in der Lage, herauszufinden, das problem durch die Verwendung dieser in Anwendung:
String curDir = System.getProperty("user.dir");
System.out.println(curDir);
Egal, wo ich meine bewerbungsmappe, die curDir
immer wieder "/home/user". Document doc = docBuilder.parse (new File("webservices.xml"))
nicht funktioniert, bis ich die webservices.xml im Verzeichnis /home/user/webservices.xml.
Läuft meine Anwendung mit Netbean 6.5.1 in Ubuntu richtigen zurückgeben curDir aber mit meinem standalone-Anwendung zurückzukehren falsch curDir (ich verwende JDK1.6.0.14 und JRE1.6.0.14 gleichen Fenster als Maschine)
Warum Document doc = docBuilder.parse (new File("webservices.xml"))
kippe ordnungsgemäß funktioniert in ubuntu JRE1.6.0.14?
Jede Idee um meine Anwendung funktioniert als eigenständiges Modul in Ubuntu 8.04 genau wie im Fenster Maschine?
- Warum nicht webservices.xml innerhalb der jar-Datei in den ersten Platz? Tun Sie es ändern müssen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verlassen Sie sich nicht auf dem aktuellen Verzeichnis Dateien Lesen, die mit der Anwendung. Verwenden Sie stattdessen ClassLoader.getResource() (Zugriff auf Datei relativ zum classpath) oder Klasse.getResouce() Zugriff auf Dateien innerhalb von Paketen.
Edit: Das oben ist nur gut für den readonly-Zugriff. Dateien, die geändert werden sollten, werden gespeichert im home-Verzeichnis des Benutzers (System-Eigenschaft
user.home
), nicht die Anwendung Verzeichnis, denn letzteres verursacht viele Probleme:Für kleine Mengen von Daten, die Sie verwenden können, die Java preferences API.
Edit2:
Für diese Besondere Anforderung sollte diese Arbeit (muss die Datei im classpath):
System.getProperty("user.dir")
gibt den aktuellen Verzeichnis, die dem Benutzer die Ausführung des Programms, statt, wo das Programm liegt.Benutzer.dir ist das aktuelle Arbeitsverzeichnis der shell, so dass Sie die cd als erste Sun Java tutorial definition des Benutzers.dir
Versuchen
Document doc = docBuilder.parse(new File("./webservices.xml"));