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.
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!