Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

java.lang.NoClassDefFoundError: javax.activation.DataHandler in android

Tags:

android

I am making a email sending application in android phone. For that I included two jar file activation. jar and mail.jar. But when I run this application and try to send the mail, I got following error on LogCat.

java.lang.NoClassDefFoundError: javax.activation.DataHandler 

I am new to android. so I am not able to figure out this issue. please Help me. Thanks

like image 322
Balban Avatar asked Jun 16 '11 07:06

Balban


2 Answers

There is an Android-friendly port of javamail which you should be using. There are three libraries that you need to include in your app: mail.jar, activation.jar, and additionnal.jar(sic). It looks like you are missing something that the activation library depends on, and this could be because you are not using the Android port of this library.

I have used the Android-friendly version of javamail successfully in a project, and it works really well.

like image 167
Mark Allison Avatar answered Sep 28 '22 13:09

Mark Allison


The JavaMail API Reference Implementation version 1.5.5 and later have built in support for Android and include support for OAuth2.

Per the documentation:

Android does not provide a Java Compatible runtime and so can't run the standard JavaMail distribution. Instead, a special version of JavaMail is available for Android. This special version of JavaMail depends on a special version of the JavaBeans Activation Framework.

You can try out this version by adding the following to your build.gradle file for your Android application:

 android {      packagingOptions {          pickFirst 'META-INF/LICENSE.txt' // picks the JavaMail license file      }  }   repositories {       jcenter()      maven {          url "https://maven.java.net/content/groups/public/"      }  }   dependencies {      compile 'com.sun.mail:android-mail:1.5.5'      compile 'com.sun.mail:android-activation:1.5.5'  } 

Starting with JavaMail 1.6.0:

JavaMail for Android requires at least Android API level 19, which corresponds to Android KitKat, currently the oldest supported version of Android.

like image 24
jmehrens Avatar answered Sep 28 '22 14:09

jmehrens