Thread.currentThread().getContextClassLoader().getResourceAsStream() gibt null zurück

Habe ich folgende code-block in meiner Anwendung;

InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream(FilePath);

Hier 'FilePath' ein absoluter Pfad der Datei.

Obige code funktioniert in linux und in windows, wenn ich die Anwendung ausführen im normalen Modus.(ie: in der Eingabeaufforderung)
Aber das wird NICHT funktionieren, wenn ich die Anwendung ausführen als windows-Dienst. Ich bekomme Eingabe-stream als 'null'.

Jemand begegnet solchen Problem vor? Ich konnte nicht finden alle Informationen über diese anderen als java-classloadern . Hier verwenden wir "ContextClassLoader", das ist der richtige classloader verwendet werden..

Keine Ahnung?

Zeigen Sie uns den genauen Pfad, den Sie verwenden. "absoluten Pfad" klingt falsch in diesem Kontext.
Hier mein Pfad ist wie das repository"+ Datei.separator +"Mittel"+ Datei.separator +"api_templates"+ "api.xml"; (ich habe home-Verzeichnis in meinem wrapper.conf-Datei und meine Anwendung als Dienst gestartet, erfolgreich)."repository-Verzeichnis ist eine erste untergeordneten Verzeichnis aus meinem home-Verzeichnis
Sind Sie sicher, dass die ID, die Ihre app läuft als wenn es ein Dienst erlaubt den Lesezugriff auf die Datei, die Sie versuchen zu öffnen? Wenn es läuft wie Sie Ihre ID in Ordnung, aber nicht als Dienst, dann in meinem Kopf, der einzige Unterschied würde sein, wie es ausgeführt wird, oder von wem es ausgeführt wird.
Wenn Sie eine Klasse verwenden-Frontlader, sollten Sie nur geben Sie einen Pfad, der relativ zu einer Ressource in der Klasse Weg. Wenn Sie möchten, absolute Pfade verwenden, verwenden Sie FileInputStream.
danke für die Hilfe..FileInputstrem funktioniert einwandfrei. Verändert mein code wie InputStream in = new FileInputStream(filePame);

InformationsquelleAutor Ratha | 2014-01-09

Schreibe einen Kommentar