Heim >Java >javaLernprogramm >Warum gibt getResourceAsStream beim Laden von Ressourcen aus einem JAR Null zurück und wie kann ich das Problem beheben?
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!