java.lang.NoClassDefFoundError:android中的javax.activation.DataHandler

Bal*_*ban 21 android

我在Android手机中发送电子邮件发送应用程序.为此,我包括两个jar文件activation. jarmail.jar.但是,当我运行此应用程序并尝试发送邮件时,我收到了以下错误LogCat.

java.lang.NoClassDefFoundError: javax.activation.DataHandler 
Run Code Online (Sandbox Code Playgroud)

我是android的新手.所以我无法弄清楚这个问题.请帮我.谢谢

Mar*_*son 61

你应该使用一个Android友好的javamail端口.您需要在应用中包含三个库:mail.jar,activation.jar和additionnal.jar(sic).看起来你遗漏了激活库依赖的东西,这可能是因为你没有使用这个库的Android端口.

我在一个项目中成功使用了Android友好版本的javamail,它运行得非常好.

  • 嘿谢谢马克......我没有包括additional.jar.感谢您的支持 (8认同)
  • 我已经包含了additional.jar文件但是同样的错误来了. (3认同)
  • 这是在maven的某个地方,以便我可以在Android Studio中将其添加为库吗? (2认同)
  • 不幸的是它是GPL,这使得几乎每个没有玩的人都没用. (2认同)

jme*_*ens 8

JavaMail的API参考实现版本1.5.5,后来有内置的支持Android的,并包括支持的OAuth2.

根据文件:

Android不提供Java兼容运行时,因此无法运行标准JavaMail分发.相反,Android的特殊版本的JavaMail可用.这个特殊版本的JavaMail依赖于JavaBeans Activation Framework的特殊版本.

您可以通过将以下内容添加到Android应用程序的build.gradle文件中来试用此版本:

 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'
 }
Run Code Online (Sandbox Code Playgroud)

JavaMail 1.6.0开始:

JavaMail for Android至少需要Android API级别19,它对应于Android KitKat,这是目前支持最新的Android版本.