Heim >Java >javaLernprogramm >Warum kann FileReader XML nicht aus einem Java-JAR lesen und wie kann ich das Problem beheben?

Warum kann FileReader XML nicht aus einem Java-JAR lesen und wie kann ich das Problem beheben?

Susan Sarandon
Susan SarandonOriginal
2024-12-09 08:53:06591Durchsuche

Why Does FileReader Fail to Read XML from a Java JAR, and How Can I Fix It?

Fehlerbehebung bei Lesefehlern von Ressourcendateien aus Java-JAR-Dateien

Beim Zugriff auf Ressourcen aus JAR-Dateien stoßen Entwickler häufig auf Schwierigkeiten. Ein solches Problem tritt auf, wenn versucht wird, XML-Dateien aus einem JAR mit einem FileReader zu lesen, was zu einem „FileNotFoundException“-Fehler führt.

In diesem speziellen Fall ruft der Entwickler die URL zur XML-Datei korrekt ab, stößt jedoch auf einen Fehler wenn es an einen FileReader übergeben wird. Dies deutet darauf hin, dass die URL-Abrufmethode funktionsfähig ist. Das Problem liegt jedoch in den folgenden Schritten:

XMLReader xr = XMLReaderFactory.createXMLReader();
xr.setContentHandler( this );
xr.setErrorHandler( this );
xr.parse( new InputSource( new FileReader( filename )));

Der FileReader benötigt einen Dateipfad als Argument, wohingegen die von getClass().getResource() erhaltene URL auf eine Ressource innerhalb der JAR verweist.

Lösung

Um dieses Problem zu lösen, verwenden Sie die Methode java.lang.Class.getResourceAsStream(String), die einen InputStream zurückgibt, der dies kann zum Lesen der Ressource verwendet werden:

URL url = getClass().getResource("/xxx/xxx/xxx/services.xml");
InputStream is = url.openStream();

Der InputStream kann dann verwendet werden, um die InputSource für den XML-Parser zu initialisieren:

xr.parse( new InputSource( is ));

Durch die Verwendung von getResourceAsStream kann der Entwickler XML erfolgreich lesen Ressourcen aus JAR-Dateien, wodurch der Fehler „FileNotFoundException“ beseitigt wird.

Das obige ist der detaillierte Inhalt vonWarum kann FileReader XML nicht aus einem Java-JAR lesen 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