我正在制作一个Android手机上的电子邮件发送应用程序,为此我包含了两个jar文件activation.jar
和mail.jar
。但是当我运行这个应用程序并尝试发送邮件时,我在LogCat
上收到以下错误。
java.lang.NoClassDefFoundError: javax.activation.DataHandler
我是Android的新手,所以无法解决这个问题。请帮帮我。谢谢。
我正在制作一个Android手机上的电子邮件发送应用程序,为此我包含了两个jar文件activation.jar
和mail.jar
。但是当我运行这个应用程序并尝试发送邮件时,我在LogCat
上收到以下错误。
java.lang.NoClassDefFoundError: javax.activation.DataHandler
我是Android的新手,所以无法解决这个问题。请帮帮我。谢谢。
有一个适用于Android的javamail端口,你应该使用它。在你的应用程序中需要包含三个库:mail.jar、activation.jar和additionnal.jar(sic)。看起来你缺少了一些激活库所依赖的内容,这可能是因为你没有使用这个库的Android端口。
我曾经在一个项目中成功地使用过适用于Android的版本的javamail,并且它表现得非常好。
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'
}
从JavaMail 1.6.0开始:
Android版JavaMail需要至少Android API 19,对应于Android KitKat,目前是Android支持的最旧版本。
android-mail
和android-activiation
,而不是javax.mail
和javax.activation-api
。 - Abhinav Atul如果你正在构建一个Java AWT应用程序或Android应用程序的邮件发送器,需要使用3个jar文件:
activation.jar
(其中包含Mime.class等类)javax_mail.jar
(其中包含Session.class等类)additional.jar
(其中包含awt文件)链接:https://code.google.com/archive/p/javamail-android/downloads
我发表评论是因为我在创建我的Java邮件发送器应用程序时遇到了太多问题,如java.lang.NoClassDefFoundError.javax.activation.DataHandler,然后我发现我忘了添加附加的jar文件。