Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用tika提取.ppt文件的文本?_Java_Apache Tika_Text Extraction - Fatal编程技术网

Java 如何使用tika提取.ppt文件的文本?

Java 如何使用tika提取.ppt文件的文本?,java,apache-tika,text-extraction,Java,Apache Tika,Text Extraction,我使用AutoDetectParserclass提取了一个带有tika的.pdf文件的文本。但是当我使用相同的代码提取.ppt文件的文本时,它会抛出一个异常。怎么做? 谢谢 编辑: 我使用的代码是: File file = new File("1.ppt"); InputStream input = new FileInputStream(file); Parser autoDetectParser = new AutoDetectParser(); Metadata metadata = ne

我使用
AutoDetectParser
class提取了一个带有tika的.pdf文件的文本。但是当我使用相同的代码提取.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)
java.lang.NoSuchFieldError:较小的\u大的\u块\u大小\u详细信息
位于org.apache.poi.poifs.filesystem.NPOIFSFileSystem.(NPOIFSFileSystem.java:93)
位于org.apache.poi.poifs.filesystem.NPOIFSFileSystem.(NPOIFSFileSystem.java:190)
位于org.apache.poi.poifs.filesystem.NPOIFSFileSystem.(NPOIFSFileSystem.java:184)
位于org.apache.tika.parser.microsoft.poifscannelerdetector.getTopLevelNames(poifscannelerdetector.java:371)
位于org.apache.tika.parser.microsoft.poifscannerDetector.detect(poifscannerDetector.java:165)
位于org.apache.tika.detect.CompositeDetector.detect(CompositeDetector.java:61)
位于org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:113)
在ppt.PPTParserTest.test3(PPTParserTest.java:52)

我发现问题是由我的
类路径中的一些额外的
jar造成的,如果在运行时类路径中有两个不同版本的POI,则会发生此异常。
在较新版本的POI中,
NPOIFSFileSystem
引用了
poifsconts。较小的\u大的\u块大小\u细节
。此常量在较旧版本的POI中不存在


在我的类路径中,我在使用
tika-app-1.4.jar
(它绑定了POI 3.9)和
POI-3.0.2-FINAL-20080204.jar
时遇到了这个异常

您可以更改方法
WorkbookFactory.create(inputStream)


这可以解决您的问题,而不是
WorkbookFactory.create(File)
。祝你好运

我使用了
AutoDetectParser
类的
parse()
方法,比如参数:AutoDetectParser.parse(inputStream,contentHandler,metadata);有什么例外吗?@theJollySin谢谢,问题解决了。你能分享一下有哪些额外的罐子冲突,以启发其他人解决这个问题吗?@computermacgyver这个问题在两个月前就解决了,但我认为其中一个(或者两个都有)这两个库导致了问题:1.poi-3.1-FINAL.jar和2.poi-scratchpad-3.1-FINAL.jar