自定义ParsingEmbeddedDocumentExtractor后Tika无法提取RAR内嵌文件内容
上下文参数未完整传递
标准ParsingEmbeddedDocumentExtractor实例化时会接收完整的ParseContext,其中包含处理docx所需的Parser实例(如POIXMLParser)、元数据处理器等核心组件。如果自定义类仅复制核心业务方法,却未在初始化时传递完整的上下文参数,会导致处理内嵌docx时缺少必要的解析依赖,只能识别文件存在,无法解析内部内容。初始化逻辑遗漏关键步骤
标准类存在隐式初始化流程,比如注册内嵌解析器、绑定Tika配置等。如果自定义类只复刻了isEmbeddedExtractor()、parseEmbedded()等显性方法,未完整实现构造函数中的初始化逻辑(比如未传入TikaConfig或完整解析器链),会直接断裂内嵌docx的解析链路。SPI服务注册缺失
Tika依赖SPI(服务提供者接口)加载解析器和提取器,标准ParsingEmbeddedDocumentExtractor是默认绑定到解析链中的。如果自定义类未在META-INF/services/org.apache.tika.extractor.EmbeddedDocumentExtractor文件中注册,也未通过ParseContext显式指定使用该自定义类,会导致处理内嵌文件时无法触发完整的嵌套解析流程。元数据传递中断
解析内嵌docx时需要从父RAR文档传递元数据上下文到子文档。自定义类如果在parseEmbedded()方法中未正确复制或传递父文档的Metadata对象,会导致子文档解析器无法获取必要的环境信息,进而无法解析内部的图片与文本。类加载器隔离问题
若自定义类通过独立类加载器加载,可能无法访问Tika核心包中的解析器实现类,导致处理docx时找不到对应的解析器,仅能识别文件类型但无法解析内容。
内容的提问来源于stack exchange,提问作者Kipoti

