[ https://issues.apache.org/jira/browse/TIKA-853?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13210807#comment-13210807 ]
John Mastarone commented on TIKA-853: ------------------------------------- I think I have a better fix for this that does not involve the previous steps taken. Inside Tika's MP4Parser parse method, I call tstream.getFile(), and assign the result to a File that is used to construct a FileInputStream. I read the stream's bytes into an array, and pass this byte array as an argument to a constructor for the IsoBufferWrapperImpl. Then after calling the IsoFile's parse method, tstream.close() does not fail. I'm not sure that using the current IsoBufferWrapperImpl constructor, which takes a File argument, would ever allow for the TikaInputStream to be closed while still inside the MP4Parser's parse method without producing the IOException in Windows, because this constructor creates MappedByteBuffers and FileChannels, and the Java API for MappedByteBuffer says "A mapped byte buffer and the file mapping that it represents remain valid until the buffer itself is garbage-collected." Should I upload another patch? > java.io.IOException with TikaGUI and testMP4.m4a > ------------------------------------------------ > > Key: TIKA-853 > URL: https://issues.apache.org/jira/browse/TIKA-853 > Project: Tika > Issue Type: Bug > Components: gui, parser > Affects Versions: 1.1 > Environment: Windows 7 > Reporter: John Mastarone > Attachments: TIKA-853.patch > > > Using a latest build: when attempting to drop the new testMP4.m4a file into > the Tika GUI, a TikaException / IOException occurs: > org.apache.tika.exception.TikaException: Failed to close temporary resources > at > org.apache.tika.io.TemporaryResources.dispose(TemporaryResources.java:152) > at > org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:127) > at org.apache.tika.gui.TikaGUI.handleStream(TikaGUI.java:320) > at org.apache.tika.gui.TikaGUI.openFile(TikaGUI.java:279) > at > org.apache.tika.gui.ParsingTransferHandler.importFiles(ParsingTransferHandler.java:94) > at > org.apache.tika.gui.ParsingTransferHandler.importData(ParsingTransferHandler.java:77) > at javax.swing.TransferHandler.importData(Unknown Source) > at javax.swing.TransferHandler$DropHandler.drop(Unknown Source) > .... > Caused by: java.io.IOException: Could not delete temporary file > C:\Users\john\AppData\Local\Temp\apache-tika-693752014807275949.tmp > at > org.apache.tika.io.TemporaryResources$1.close(TemporaryResources.java:70) > at > org.apache.tika.io.TemporaryResources.close(TemporaryResources.java:121) > at > org.apache.tika.io.TemporaryResources.dispose(TemporaryResources.java:150) > ... 40 more > I know that the parser for this file is new and its external source parser > has some potential bugs, but this exception does not occur when using Tika > CLI to detect / parse the test file. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira