getSystemResourceAsStream () gibt null zurück

7

Hiii ...      Ich möchte den Inhalt der Eigenschaftendatei mit getSystemResourceAsStream () in das InputStream-Klassenobjekt bringen. Ich habe den Beispielcode erstellt. Es funktioniert gut mit der main () -Methode, aber wenn ich das Projekt bereitstellen und auf dem Server ausführen, kann der Dateipfad der Eigenschaft nicht abgerufen werden ... so dass inputstream-Objekt null Wert speichert.

Beispielcode ist hier ..

%Vor%     
Hitesh Solanki 26.03.2010, 09:44
quelle

3 Antworten

15
  

Ich stelle das Projekt bereit und laufe auf dem Server,

Das klingt wie eine JSP / Servlet-Webapplikation. In diesem Fall müssen Sie das ClassLoader verwenden, das wie folgt erhalten wird:

%Vor%

Dieser hat Zugriff auf die Klassenpfadpfade all , die mit der fraglichen Webanwendung verknüpft sind, und Sie sind nicht mehr davon abhängig, welcher Elternklassenlader (eine Webanwendung hat mehr als eine!) Ihre Klasse geladen hat.

Dann müssen Sie auf diesem Classloader einfach getResourceAsStream() , um eine Klassenpfad-Ressource als Stream zu erhalten, nicht die getSystemResourceAsStream() , die davon abhängt, wie die Webanwendung gestartet wird. Sie wollen auch nicht davon abhängig sein, da Sie bei externem Hosting keine Kontrolle darüber haben:

%Vor%

Dies ist schließlich robuster als Ihre ursprüngliche getSystemResourceAsStream() -Ansicht und die Class#getResourceAsStream() , wie von anderen vorgeschlagen.

    
BalusC 26.03.2010 12:43
quelle
6

Der SystemClassLoader lädt Ressourcen von java.class.path witch maps auf die Systemvariable CLASSPATH . In Ihrer lokalen Anwendung haben Sie wahrscheinlich die Ressource, die in java.class.path variable geladen werden soll. Auf dem Server ist es eine andere Geschichte, weil der Server höchstwahrscheinlich Ihre Ressourcen von einem anderen Klassenlader lädt.

Versuchen Sie es mit der ClassLoader , die die Klasse geladen hat, indem Sie den korrekten Pfad verwenden:

%Vor%

Dieser Artikel könnte ebenfalls nützlich sein.

    
bruno conde 26.03.2010 10:06
quelle
1

Verwenden Sie getResourceAsStream() anstelle von 'getSystemResourceAsStream ()'.

    
Chandra Sekar S 26.03.2010 10:06
quelle

Tags und Links