首页 > 解决方案 > Apache-tika 1.23 失败 .eml 文件作为电子邮件的附件抛出 NoClassDefFoundError

问题描述

java.lang.NoClassDefFoundError: org/apache/james/mime4j/stream/MimeConfig$Builder 
at org.apache.tika.parser.mail.RFC822Parser.parse(RFC822Parser.java:74)
at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:280)
at org.apache.tika.parser.ParserDecorator.parse(ParserDecorator.java:188)
at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:280)
at org.apache.tika.parser.CompositeParser.parse(CompositeParser.java:280)
at org.apache.tika.parser.AutoDetectParser.parse(AutoDetectParser.java:143)
at org.apache.tika.Tika.parseToString(Tika.java:527)
at org.apache.tika.Tika.parseToString(Tika.java:602)

尝试使用 Apache Tika 解析 .eml 文件中的正文内容时会抛出 NoClassDefFoundError。

AutoDetectParser 将其标识为要使用的 RFC822Parser,但是,在 RFC822Parser 的 parse 方法中,它尝试构建 MimeConfig

MimeConfig config = new MimeConfig.Builder()
                .setMaxLineLen(100000)
                .setMaxHeaderLen(100000)
                .build();

无法构造实例并中断。

标签: javajakarta-mailapache-tikaeml

解决方案


实际上,我想出了为什么 RFC822Parser 未能创建 MimeConfig 实例的问题,因为两个 Apache 库 -> Apache Tika 和 Apache James Jdkim 库之间存在冲突。两者都有相同的类名 MimeConfig,但行为不同,加载等效类 Runtime 出问题了


推荐阅读