Apache-tika 1.23 fails .eml file as an attachment to email throws NoClassDefFoundError

huangapple 未分类评论55阅读模式
英文:

Apache-tika 1.23 fails .eml file as an attachment to email throws 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 的解析方法中,它尝试构建 MimeConfig:

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

无法构建该实例并中断。

英文:
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)

When trying to parse the body content from .eml file using Apache Tika throws NoClassDefFoundError.

AutoDetectParser identifies it as RFC822Parser to be used, however, in the parse method of RFC822Parser it tries to build the MimeConfig

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

Unable to construct the instance and breaks.

答案1

得分: 0

实际上,我找到了问题所在,即为什么 RFC822Parser 无法创建 MimeConfig 实例,因为两个 Apache 库之间存在冲突,即 Apache Tika 和 Apache James Jdkim 库。两者都有相同的类名 MimeConfig,但行为不同,加载等效类 Runtime 导致混乱。

英文:

Actually, I figured the problem as to why RFC822Parser failing to create an instance of MimeConfig because there was a conflict between two Apache libraries
-> Apache Tika and Apache James Jdkim library.
Both have the same class name MimeConfig but different behavior and loading equivalent class Runtime go haywire

huangapple
  • 本文由 发表于 2020年7月27日 09:38:05
  • 转载请务必保留本文链接:https://java.coder-hub.com/63107560.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定