为何Tika应用无法打印文件内容?tika.parseToString返回空字符串
问题
为何以下应用无法打印文件内容?
代码示例:
package org.example; import org.apache.tika.Tika; import java.io.File; public class TikaFirstTry { public static void main(String[] args) throws Exception { Tika tika = new Tika(); for (String fileName : args){ System.out.println(fileName); String text = tika.parseToString(new File(fileName)); System.out.println("text is: " + text); } } }
文件foo.txt内容:
pizzaaaaa
程序输出:
C:/Users/me/Desktop/foo.txt text is:
且未抛出任何异常。
Maven依赖配置如下:
<dependencies> <dependency> <groupId>org.apache.tika</groupId> <artifactId>tika-async-cli</artifactId> <version>2.7.1-SNAPSHOT</version> </dependency> </dependencies>
解决方案
问题出在你引入的Maven依赖上。tika-async-cli是Apache Tika的异步命令行工具专用包,它并未包含处理文本文件所需的核心解析器组件,所以调用parseToString时无法解析文件内容,但因为缺失的不是基础核心类,所以不会抛出异常。
你需要替换为合适的依赖,推荐使用tika-core搭配包含标准解析器的tika-parsers-standard-package,也可以直接用tika-core加tika-parsers-all(包含所有解析器,适合快速测试)。
修改后的Maven依赖示例:
<dependencies> <dependency> <groupId>org.apache.tika</groupId> <artifactId>tika-core</artifactId> <version>2.7.0</version> <!-- 建议使用稳定版,而非SNAPSHOT --> </dependency> <dependency> <groupId>org.apache.tika</groupId> <artifactId>tika-parsers-standard-package</artifactId> <version>2.7.0</version> <type>pom</type> </dependency> </dependencies>
替换依赖后重新构建项目,运行程序就能正确解析并打印出foo.txt里的内容了。
内容的提问来源于stack exchange,提问作者IDK
相关产品推荐
相关产品推荐

