1

我已经使用类提取了带有 tika 的 .pdf 文件的文本AutoDetectParser。但是当我使用相同的代码提取 .ppt 文件的文本时,它会引发异常。怎么做?谢谢

编辑:
我使用的代码是:

File file = new File("1.ppt");
InputStream input = new FileInputStream(file);
Parser autoDetectParser = new AutoDetectParser();
Metadata metadata = new Metadata();
StringWriter writer = new StringWriter();
ContentHandler handler = new WriteOutContentHandler(writer);
autoDetectParser.parse(input, handler, metadata, new ParseContext());

例外是:

java.lang.NoSuchFieldError: SMALLER_BIG_BLOCK_SIZE_DETAILS
at org.apache.poi.poifs.filesystem.NPOIFSFileSystem.<init>(NPOIFSFileSystem.java:93)
at org.apache.poi.poifs.filesystem.NPOIFSFileSystem.<init>(NPOIFSFileSystem.java:190)
at org.apache.poi.poifs.filesystem.NPOIFSFileSystem.<init>(NPOIFSFileSystem.java:184)
at org.apache.tika.parser.microsoft.POIFSContainerDetector.getTopLevelNames(POIFSContainerDetector.java:371)
at org.apache.tika.parser.microsoft.POIFSContainerDetector.detect(POIFSContainerDetector.java:165)
at org.apache.tika.detect.CompositeDetector.detect(CompositeDetector.java:61)
at org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:113)
at ppt.PPTParserTest.test3(PPTParserTest.java:52)

我发现问题是由jars我的classpath.

4

2 回答 2

5

如果您的运行时类路径中有两个不同版本的 POI,则可能会发生此异常。在较新版本的 POI 中,NPOIFSFileSystem引用POIFSConstants.SMALLER_BIG_BLOCK_SIZE_DETAILS. 此常量在旧版本的 POI 中不存在。

tika-app-1.4.jar我在(捆绑了 POI 3.9)和poi-3.0.2-FINAL-20080204.jar我的类路径中遇到了这个异常。

于 2014-01-12T00:46:11.513 回答
-2

你可以改变你的方法WorkbookFactory.create(inputStream)
而不是WorkbookFactory.create(File),这可以解决你的问题。祝你好运 !

于 2014-07-03T08:39:45.020 回答