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

Apache Tika Parser在Fat Jar中仅识别2种MIME类型的问题排查

Tika在Assembly构建的Fat Jar中仅识别少量MIME类型的解决办法

问题场景

创建空Maven项目,引入tika-core、tika-parsers-standard-package、slf4j-api、slf4j-simple依赖,使用maven-assembly-plugin构建Fat Jar。生成的Jar文件大小为47M,通过mvn dependency:tree检查依赖无异常,但运行诊断代码时,Tika仅返回video/mpeg、video/x-msvideo两种支持的MIME类型,且无任何警告输出。

排查尝试

  • 调整依赖版本、修改插件配置、切换插件版本,问题依旧
  • 在IDE中直接运行项目,Tika可正常识别229种MIME类型
  • 创建空Spring Boot项目引入相同依赖,运行后功能正常

解决方案

将构建插件替换为maven-shade-plugin,并添加ServicesResourceTransformer转换器,配置示例如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-shade-plugin</artifactId>
    <version>3.4.1</version>
    <executions>
        <execution>
            <phase>package</phase>
            <goals>
                <goal>shade</goal>
            </goals>
            <configuration>
                <transformers>
                    <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                </transformers>
            </configuration>
        </execution>
    </executions>
</plugin>

原因解析

Tika依赖Java的ServiceLoader机制加载各类解析器,maven-assembly-plugin打包时会直接覆盖多个依赖中的META-INF/services文件,导致大部分解析器的配置丢失;而ServicesResourceTransformer会合并所有依赖中的META-INF/services文件内容,保证ServiceLoader能找到所有实现类,从而让Tika正常识别全部MIME类型。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 04:54:58