POI3.5 final
jdk 1.5同一个excel文件分别放在不同的路径下面
java/a.excel
resource/a.excel两个目录java和resource都已经放到build path里面结果resource/a.excel这个,读取老是报错 wb = new HSSFWorkbook(new ClassPathResource("resource/a.excel")
.getInputStream(),
true /*yes to copy macro*/);抛如下异常:
Caused by: 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.SmallDocumentBlockList.remove(SmallDocumentBlockList.java:30)
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.SmallDocumentBlockList.fetchBlocks(SmallDocumentBlockList.java:30)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.processProperties(POIFSFileSystem.java:534)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.processProperties(POIFSFileSystem.java:521)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.processProperties(POIFSFileSystem.java:521)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:176)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:316)
... 60 more
我试过把同一个excel放到不同的目录下,唯独有一个目录是抛这个错误,
哪位有这方面经验的指点一下。
jdk 1.5同一个excel文件分别放在不同的路径下面
java/a.excel
resource/a.excel两个目录java和resource都已经放到build path里面结果resource/a.excel这个,读取老是报错 wb = new HSSFWorkbook(new ClassPathResource("resource/a.excel")
.getInputStream(),
true /*yes to copy macro*/);抛如下异常:
Caused by: 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.SmallDocumentBlockList.remove(SmallDocumentBlockList.java:30)
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.SmallDocumentBlockList.fetchBlocks(SmallDocumentBlockList.java:30)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.processProperties(POIFSFileSystem.java:534)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.processProperties(POIFSFileSystem.java:521)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.processProperties(POIFSFileSystem.java:521)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:176)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:316)
... 60 more
我试过把同一个excel放到不同的目录下,唯独有一个目录是抛这个错误,
哪位有这方面经验的指点一下。
改为引用绝对路径看看
两个目录颠倒下,估计就是java/那个目录报异常了。
应该是你使用不当吧。个人观点,哈哈
我在build path的source里,把另一个test/source的exclude **改成 exclude <none>java/main/resource
include all
exclude <none>
java/test/resource
include all
exclude <none> //之前是exclude **但还是不知道具体是啥原因引起的,
估计可能跟楼上老兄说的优点关系
看你的目录规划,在编译后,java和resource目录本身不会进入classpath,但它们下面的文件和子目录都会进入classpath的根目录。
也就是说你java/a.excel和resource/a.excel,都会到cp的根目录下,但2个同名,只会取一个。
换个名字
java/main/resources, output路径为:target/classes2 ,区别于maven默认的target/classes
java/test/resources, output路径为:target/test-classes2, 区别于maven默认的target/test-classes实际build产生四个target下的目录
target/classes
target/classes2
target/test-classes
target/test-classes2结果只有target/classes/a/a.xls这个文件出错,感觉是maven拷贝文件的时候出错,但是test下面的又是正确的,非常奇怪
src/main/java,输出到target/classes
src/main/resource,输出到target/classes,exclude:**
src/test/java,输出到target/test-classes
src/test/resource,输出到target/test-classes,exclude:**你按这个设置再试试
请问一下,
include:all
exclude:**
这个怎么理解?我怎么感觉是矛盾的?
这个可能吗?貌似有点道理!楼主看看应用服务器下的class目录下的内容