Thread.currentThread().getContextClassLoader().getResource(".") hat unterschiedliche Ergebnis auf windows und linux
Habe ich eine einfache Java-Klasse:
public class T {
public static void main(String[] args) {
System.err.println(Thread
.currentThread()
.getContextClassLoader()
.getResource("."));
}
}
Ausführen der oben genannten Klasse, die auf windows, die ich habe:
file:/T:/java/
Während es läuft auf Linux, ich habe einen anderen stuff:
jar:file:/usr/lib/jvm/java-6-openjdk-common/jre/lib/ext/pulse-java.jar!/
Dieses problem verursacht mein Programm nicht auf Linux, als Sie es nicht finden können die Dateien, die ich angegeben. Jede Idee, wie man Abhilfe?
was erwartest du
Der aktuelle Ordner wird beim starten des java-Programms. Eigentlich egal, was ich will, ist die Verwendung
Habe zu lieben, die Dokumentation auf die Methode "Der name einer Ressource ist ein '/'getrennt den Pfad-Namen ein, gibt die Ressource an." Also name ist eine Zeichenfolge, die kann oder kann nicht haben ' / ' - Zeichen.
Das aktuelle Verzeichnis? Warum nicht einfach
Classic XY-problem. Bitte Bearbeiten Sie Ihre Frage mit dem Inhalt deines letzten Kommentars, so wie anscheinend in Ihrem ist Ziel.
"."
zurückzukehren?Der aktuelle Ordner wird beim starten des java-Programms. Eigentlich egal, was ich will, ist die Verwendung
Thread.currentThread.getContextClassLoader().getResource("app.conf")
um die app.conf
- Datei. Es funktioniert auf windows, aber nicht unter Linux.Habe zu lieben, die Dokumentation auf die Methode "Der name einer Ressource ist ein '/'getrennt den Pfad-Namen ein, gibt die Ressource an." Also name ist eine Zeichenfolge, die kann oder kann nicht haben ' / ' - Zeichen.
Das aktuelle Verzeichnis? Warum nicht einfach
File
. Ressource ist, über dem laden "Dateien", die sind Teil des Programms. In der Produktion Bereitstellungen, wird das aktuelle Arbeitsverzeichnis ist unwahrscheinlich, dass im classpath (vielleicht).Classic XY-problem. Bitte Bearbeiten Sie Ihre Frage mit dem Inhalt deines letzten Kommentars, so wie anscheinend in Ihrem ist Ziel.
InformationsquelleAutor Gelin Luo | 2013-05-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Programm das aktuelle Verzeichnis kann oder kann nicht im Klassenpfad, je nachdem, wie das Programm ausgeführt wird. wenn Sie brauchen, um etwas zu bekommen, die möglicherweise in eine jar-Datei oder kann im aktuellen Verzeichnis, dann sollten Sie zwei getrennte Prüfungen:
new File("")
).Zum Beispiel, nehmen wir an, die Klasse Pfad root ist
./target/test-classes
, und ich will einen Ordner./target/test-classes/resources
Verzeichnis, wie bekomme ich es aus der java-app?warum versuchst du das Verzeichnis des root-classpath? das Programm kann ausgeführt werden, aus einer jar-Datei, die nicht
Das ist der Fall, ich bin mit den unit test Fällen, in denen das Programm nicht starten, aus der jar-Datei
InformationsquelleAutor jtahlborn