Heim >Java >javaLernprogramm >Warum gibt getResourceAsStream beim Laden von Ressourcen aus einem JAR Null zurück und wie kann ich das Problem beheben?

Warum gibt getResourceAsStream beim Laden von Ressourcen aus einem JAR Null zurück und wie kann ich das Problem beheben?

Barbara Streisand
Barbara StreisandOriginal
2024-12-20 07:59:10375Durchsuche

Why Does getResourceAsStream Return Null When Loading Resources from a JAR, and How Can I Fix It?

Auflösen von „getResourceAsStream Returns Null“ zum Laden von Ressourcen aus JAR

Beim Versuch, eine Textdatei aus einem Paket innerhalb eines kompilierten JAR zu laden, Die getResourceAsStream-Methode kann null zurückgeben, was Entwickler ratlos macht. Dieser Artikel geht auf das Problem ein und bietet eine Lösung.

Die ersten Versuche, die Datei mit Class::getResourceAsStream und verschiedenen Argumenten zu laden, führten alle dazu, dass null ausgegeben wurde. Dieses unerwartete Verhalten ist auf die Tatsache zurückzuführen, dass der Systemklassenlader, der von der Methode Class::getResourceAsStream(...) verwendet wird, JARs nicht erkennt und daher nicht auf die Ressourcen in der JAR-Datei zugreifen kann.

Um dieses Problem zu beheben, muss der entsprechende Klassenlader verwendet werden, der Zugriff auf die Ressourcen im JAR hat. In Java wird jede Klasse von einem Klassenlader geladen, und der Klassenlader, der die Lifepaths-Klasse geladen hat, hat Zugriff auf die Ressourcen im JAR. Daher besteht die korrekte Methode zum Laden der Datei darin, die Methode Class::getResourceAsStream() direkt zu verwenden, wie unten gezeigt:

public static InputStream loadResource() {
    return Lifepaths.class.getResourceAsStream("/initialization/Lifepaths.txt");
}

Beachten Sie, dass beim Aufruf von getResourceAsStream(name) der Name mit „/“ beginnen muss. ". Dies stellt sicher, dass die Ressource aus dem Stammverzeichnis des Klassenpfads geladen wird und ist wichtig, damit der Klassenlader die Datei korrekt finden kann.

Das obige ist der detaillierte Inhalt vonWarum gibt getResourceAsStream beim Laden von Ressourcen aus einem JAR Null zurück und wie kann ich das Problem beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn