java - 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();
无法构造实例并中断。
解决方案
实际上,我想出了为什么 RFC822Parser 未能创建 MimeConfig 实例的问题,因为两个 Apache 库 -> Apache Tika 和 Apache James Jdkim 库之间存在冲突。两者都有相同的类名 MimeConfig,但行为不同,加载等效类 Runtime 出问题了
推荐阅读
- c - 如何静态断言浮点是 C 中的 IEEE-754?
- java - 从eclipse动态部署Tomcat上的项目
- swift - 如何在一个 CollectionViewController 中查看我的所有聊天室?
- maven - 文档的生成应该在父模块还是模块中完成?
- android - 动态布尔表达式变量和布尔函数的区别
- razor - 剃刀中的文本框宽度
- java - 在 Intellij“从原型创建项目”向导中显示自定义原型属性
- python - 运行 jaydebeapi 时 python 崩溃
- c++ - 连接元组作为类型
- c++ - OpenSSL 解密 - EVP_DecryptFinal_ex 失败