You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Apache Tika-Core 2.6.0中BodyContentHandler解析内容始终为空求助

问题原因及解决方案

核心原因

  1. 依赖缺失:tika-core-2.6.0仅包含Tika的核心框架,不包含任何具体文件格式的解析器(比如PDF解析器)。旧版tika-app-1.1是打包了所有解析器的完整包,所以之前能正常解析PDF;换成tika-core后,因缺少对应格式的解析模块,AutoDetectParser无法找到合适的解析器处理文件,自然无法生成内容。
  2. 代码变量错误:你的代码中获取的流对象是stream,但判断非空的却是未关联的documentByteArrayInput——如果这个变量为null,解析逻辑根本不会执行,直接导致handler为空。

修复步骤

1. 修正代码变量错误

将判断条件改为检查stream是否非空:

InputStream stream = MyClass.class.getResourceAsStream("test1.pdf");
// 修正变量名,匹配实际获取的流对象
if (stream != null) {
    Metadata metadata = new Metadata();
    BodyContentHandler handler= new BodyContentHandler(-1);
    AutoDetectParser parser= new AutoDetectParser();
    parser.parse(stream, handler, metadata);
    String doc= handler.toString().replaceAll("\\s+", "");
    int charsNo= doc.length();
}

2. 添加必要的解析器依赖

tika-core本身不提供具体格式的解析能力,需要按需添加解析模块:

  • 若需支持PDF及大部分常见格式,添加标准解析器包:
<dependency>
    <groupId>org.apache.tika</groupId>
    <artifactId>tika-parsers-standard-package</artifactId>
    <version>2.6.0</version>
</dependency>
  • 若仅需PDF解析,可单独添加PDF解析模块:
<dependency>
    <groupId>org.apache.tika</groupId>
    <artifactId>tika-parsers-pdf-module</artifactId>
    <version>2.6.0</version>
</dependency>

3. 验证解析状态

解析后可打印文件类型,确认解析器是否正常加载:

// 解析完成后添加此行,检查是否正确识别文件类型
System.out.println("文件类型:" + metadata.get(Metadata.CONTENT_TYPE));

若输出application/pdf,说明解析器已正常工作,此时handler应能获取到文件内容。

内容的提问来源于stack exchange,提问作者komplRX

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:05:19