Well, we know that you are getting a BufferedInputStream from the call to the
getResourceAsStream() method thanks to this in the log;
> log:
> java.io.BufferedInputStream
But, it almost seems as if the file has been truncated in some way so that
data is missing if I am interpreting the stack trace correctly. The only
thing I can now think to do is to identify what is missing somehow and so
would suggest that you write a simple loop to dump the streams returned by
both methods so that you can look to see what is missing. That should also
give you the chance to see if the total numbers of bytes read from both
differ, if so by how much and it may point us in the right direction.
Yours
Mark B
individuodk wrote:
>
> Hi,
>
> version poi: 3.5-FINAL
> jdk: 1.5.0_02
>
> the file is the same file that works with FileInputStream("path");
> Also, it happens with blank excel file.
>
> thanksss!
>
>
>
> David Fisher wrote:
>>
>> Hi -
>>
>> Have you confirmed that the stream you are getting is a valid file?
>> Could there be another non-xls or damaged file hiding somewhere on
>> your classpath with your resource name?
>>
>> Try simply writing out the stream you have to the filesystem and see
>> if it is an actual XLS file.
>>
>> Also, it could be helpful if you tell us which versions of POI and
>> Java you are using.
>>
>> Regards,
>> Dave
>>
>> On Nov 18, 2009, at 10:15 AM, individuodk wrote:
>>
>>>
>>> Hi,
>>>
>>> System.out.println(inputStream.getClass().getName());
>>> is a curiusious solution, but unfortunatelly it doesn´t work.
>>>
>>> log:
>>> java.io.BufferedInputStream
>>> [ java.io.IOException ] block[ 63 ] already removed - does your
>>> POIFS have
>>> circular or duplicate block references?java.io.IOException:
>>> block[ 63 ]
>>> already removed - does your POIFS have circular or duplicate block
>>> references?
>>> at
>>> org.apache.poi.poifs.storage.BlockListImpl.remove(BlockListImpl.java:
>>> 89)
>>> at
>>> org
>>> .apache
>>> .poi.poifs.storage.RawDataBlockList.remove(RawDataBlockList.java:32)
>>> at
>>> org
>>> .apache
>>> .poi
>>> .poifs
>>> .storage
>>> .BlockAllocationTableReader
>>> .fetchBlocks(BlockAllocationTableReader.java:187)
>>> at
>>> org
>>> .apache
>>> .poi.poifs.storage.BlockListImpl.fetchBlocks(BlockListImpl.java:123)
>>> at
>>> org
>>> .apache
>>> .poi
>>> .poifs.storage.RawDataBlockList.fetchBlocks(RawDataBlockList.java:32)
>>> at
>>> org
>>> .apache
>>> .poi
>>> .poifs
>>> .filesystem.POIFSFileSystem.processProperties(POIFSFileSystem.java:
>>> 541)
>>> at
>>> org
>>> .apache
>>> .poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:176)
>>> at
>>> org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:
>>> 316)
>>> at
>>> org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:
>>> 297)
>>> at
>>> org
>>> .apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:
>>> 60)
>>>
>>> very thanks MSB,
>>> has anybody another idea?
>>>
>>>
>>> MSB wrote:
>>>>
>>>> I do not know the answer to your question but I would like to
>>>> discover
>>>> just what type of stream you are getting back when you call the
>>>> getResourceAsStream() method. If you have the time, it may be worth
>>>> adding
>>>> a System.out.println(inputStream.getClass().getName()); statement
>>>> just to
>>>> see what you are actually getting back; something like;
>>>>
>>>> if (sourcePath == null){
>>>> inputStream =
>>>> getClass().getClassLoader().getResourceAsStream("file.xls");
>>>> System.out.println(inputStream.getClass().getName());
>>>> workbook = WorkbookFactory.create(inputStream);
>>>> }
>>>>
>>>> Also - and I admit that there is no reason why you would need to do
>>>> this -
>>>> you could try wrapping up that input stream into a FileInputStream
>>>> just,
>>>> again, to see what happens.
>>>>
>>>> Yours
>>>>
>>>> Mark B
>>>>
>>>>
>>>> individuodk wrote:
>>>>>
>>>>> hi!!
>>>>> poi-3.5-FINAL.jar
>>>>>
>>>>>
>>>>> if (sourcePath == null){
>>>>> inputStream =
>>>>> getClass().getClassLoader().getResourceAsStream("file.xls");
>>>>> workbook = WorkbookFactory.create(inputStream);
>>>>> }
>>>>> else{
>>>>> inputStream = new FileInputStream(sourcePath);
>>>>> workbook = WorkbookFactory.create(inputStream);
>>>>> }
>>>>>
>>>>> When i read excel file from FileInputStream to modify it, all
>>>>> works fine.
>>>>> When i read excel file (SAME excel file) from
>>>>> getClass().getClassLoader().getResourceAsStream..., all are
>>>>> exceptions
>>>>> like next:
>>>>>
>>>>> convertPOIOutputStream|null|Exception||4|5|N|
>>>>> [ java.io.IOException ]
>>>>> block[ 63 ] already removed -
>>>>> does your POIFS have circular or duplicate block
>>>>> references?java.io.IOException: block[ 63 ] already
>>>>> removed - does your POIFS have circular or duplicate block
>>>>> references?
>>>>> at
>>>>> org
>>>>> .apache.poi.poifs.storage.BlockListImpl.remove(BlockListImpl.java:
>>>>> 89)
>>>>> at
>>>>> org
>>>>> .apache
>>>>> .poi.poifs.storage.RawDataBlockList.remove(RawDataBlockList.java:32)
>>>>> at
>>>>> org
>>>>> .apache
>>>>> .poi
>>>>> .poifs
>>>>> .storage
>>>>> .BlockAllocationTableReader.fetchBlocks(BlockAllocationTableR
>>>>> eader.java:187)
>>>>> at
>>>>> org
>>>>> .apache
>>>>> .poi.poifs.storage.BlockListImpl.fetchBlocks(BlockListImpl.java:123)
>>>>> at
>>>>> org
>>>>> .apache
>>>>> .poi
>>>>> .poifs.storage.RawDataBlockList.fetchBlocks(RawDataBlockList.java:
>>>>> 32)
>>>>> at
>>>>> org
>>>>> .apache
>>>>> .poi
>>>>> .poifs
>>>>> .filesystem.POIFSFileSystem.processProperties(POIFSFileSystem.java:
>>>>> 54
>>>>> 1)
>>>>> at
>>>>> org
>>>>> .apache
>>>>> .poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:
>>>>> 176)
>>>>>
>>>>>
>>>>> or
>>>>>
>>>>> convertPOIOutputStream|null|Exception||4|5|N| [
>>>>> org.apache.poi.hssf.record.RecordFormatException ] U
>>>>> nable to construct record
>>>>> instanceorg.apache.poi.hssf.record.RecordFormatException: Unable to
>>>>> constr
>>>>> uct record instance
>>>>> at
>>>>> org.apache.poi.hssf.record.RecordFactory
>>>>> $ReflectionRecordCreator.create(RecordFactory.jav
>>>>> a:64)
>>>>> at
>>>>> org
>>>>> .apache
>>>>> .poi
>>>>> .hssf.record.RecordFactory.createSingleRecord(RecordFactory.java:
>>>>> 263)
>>>>> at
>>>>> org
>>>>> .apache
>>>>> .poi
>>>>> .hssf
>>>>> .record
>>>>> .RecordFactoryInputStream.readNextRecord(RecordFactoryInputStre
>>>>> am.java:270)
>>>>> at
>>>>> org
>>>>> .apache
>>>>> .poi
>>>>> .hssf
>>>>> .record
>>>>> .RecordFactoryInputStream.nextRecord(RecordFactoryInputStream.j
>>>>> ava:236)
>>>>> at
>>>>> org
>>>>> .apache
>>>>> .poi.hssf.record.RecordFactory.createRecords(RecordFactory.java:377)
>>>>> at
>>>>> org
>>>>> .apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:
>>>>> 275)
>>>>> at
>>>>> org
>>>>> .apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:
>>>>> 200)
>>>>> at
>>>>> org
>>>>> .apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:
>>>>> 316)
>>>>> at
>>>>> org
>>>>> .apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:
>>>>> 297)
>>>>> at
>>>>> org
>>>>> .apache
>>>>> .poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:60)
>>>>>
>>>>>
>>>>> any idea about how to input file to resource? why does it happen ???
>>>>> thanks!
>>>>>
>>>>
>>>>
>>>
>>> --
>>> View this message in context:
>>> http://old.nabble.com/exception-when-inputstream-is-read-from-getClass%28%29.getClassLoader%28%29.getResourceAsStream%28%22file.xls%22%29-tp26406348p26412919.html
>>> Sent from the POI - User mailing list archive at Nabble.com.
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [email protected]
>>> For additional commands, e-mail: [email protected]
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>>
>>
>
>
--
View this message in context:
http://old.nabble.com/exception-when-inputstream-is-read-from-getClass%28%29.getClassLoader%28%29.getResourceAsStream%28%22file.xls%22%29-tp26406348p26421223.html
Sent from the POI - User mailing list archive at Nabble.com.
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]