Ressourcen-Leck: die Arbeitsmappe ist nie geschlossen Achtung: bei Verwendung von Apache.POI XSSFWorkbook
So, ich mit Apache POI, um zu analysieren, eine Excel-Datei in meine Datenbank. Dafür bin ich beim initialisieren XSSFWorkbook
wie folgt:
XSSFWorkbook workbook = new XSSFWorkbook(fIP);
Dann beginne ich mit meiner Methode. workbook.close()
ist nicht als eine Methode zum schließen der Arbeitsmappe danach. Irgendwelche Ideen, wie kann ich garbage collection nehmen Sie die Arbeitsmappe, nachdem die Aufgabe abgeschlossen ist?
Arbeitsmappe.close() ist sehr viel vorhanden, warum bist du nicht mit?
InformationsquelleAutor rpd | 2015-08-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte dieses Problem, und es machte wenig Sinn.
Am Ende spürte ich die Frage bis zu meiner IDE (netbeans) wurde Kommissionierung bis eine frühere version des POI-Bibliotheken (v3.8), die nicht über das "schließen" - Methode.
So überprüfen Sie Ihre Klasse-Pfad und suchen Sie nach doppelten Importe der verschiedenen Versionen des POI-Bibliotheken.
InformationsquelleAutor IanB
Den docs sagen, dass die Klasse implementiert
Closeable
. Damit hat es eineclose()
Methode und können Sie schließen Sie die Arbeitsmappe, wie diese:Da die Klasse implementiert auch
AutoCloseable
youn gehen kann mit einem try-mit-Ressourcen-block:Wenn Sie diesen Ansatz verwenden die Arbeitsmappe automatisch geschlossen, nachdem der try-block beendet wurde.
InformationsquelleAutor stevecross
Ändern Sie einfach das Beispiel aus der apache-Seite:
:
InformationsquelleAutor nakani