bbottema / outlook-message-parser

A Java parser for Outlook messages (.msg files)
76 stars 35 forks source link

NoClassDefFoundError when trying to parse .msg file with pdf attachment #60

Closed SchefferMarco closed 1 year ago

SchefferMarco commented 1 year ago

I tried parsing a .msg file with a pdf attachment and when I tried to run the code it threw a ClassNotFoundExpection.

My build.gradle looks like the following:

plugins {
    id 'java'
    id 'org.springframework.boot' version '2.6.6'
    id 'io.spring.dependency-management' version '1.1.0'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.11'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter'
    implementation 'org.simplejavamail:outlook-message-parser:1.9.6'

    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

tasks.named('test') {
    useJUnitPlatform()
}

The code I was using:

InputStream is = getClass().getClassLoader().getResourceAsStream("msg/attachment_pdf.msg");
OutlookMessageParser msgp = new OutlookMessageParser();
OutlookMessage msg = msgp.parseMsg(is);

The error that showed up:

java.lang.NoClassDefFoundError: jakarta/activation/MimetypesFileTypeMap
    at org.simplejavamail.outlookmessageparser.model.MimeType.createMap(MimeType.java:31) ~[outlook-message-parser-1.9.6.jar:na]
    at org.simplejavamail.outlookmessageparser.model.MimeType.<clinit>(MimeType.java:24) ~[outlook-message-parser-1.9.6.jar:na]
    at org.simplejavamail.outlookmessageparser.model.OutlookFileAttachment.checkMimeTag(OutlookFileAttachment.java:100) ~[outlook-message-parser-1.9.6.jar:na]
    at org.simplejavamail.outlookmessageparser.OutlookMessageParser.parseAttachment(OutlookMessageParser.java:676) ~[outlook-message-parser-1.9.6.jar:na]
    at org.simplejavamail.outlookmessageparser.OutlookMessageParser.checkDirectoryEntry(OutlookMessageParser.java:224) ~[outlook-message-parser-1.9.6.jar:na]
    at org.simplejavamail.outlookmessageparser.OutlookMessageParser.parseMsg(OutlookMessageParser.java:138) ~[outlook-message-parser-1.9.6.jar:na]
    at com.example.demo.DemoApplication.doSomethingAfterStartup(DemoApplication.java:23) ~[main/:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na]
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:na]
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na]
    at java.base/java.lang.reflect.Method.invoke(Method.java:566) ~[na:na]
    at org.springframework.context.event.ApplicationListenerMethodAdapter.doInvoke(ApplicationListenerMethodAdapter.java:344) ~[spring-context-5.3.18.jar:5.3.18]
    ... 17 common frames omitted
Caused by: java.lang.ClassNotFoundException: jakarta.activation.MimetypesFileTypeMap
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) ~[na:na]
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na]
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[na:na]
    ... 29 common frames omitted

Attached an email with an attached pdf file. attachment_pdf.zip

SchefferMarco commented 1 year ago

Error will not show up after adding dependency for jakarta.activation to my gradle.build

implementation 'com.sun.activation:jakarta.activation:2.0.1'
bbottema commented 1 year ago

Well it is mentioned in the documentation as a core dependency and it's also present in the POM.