Подтвердить что ты не робот

Java.lang.NoClassDefFoundError: javax.activation.DataHandler в android

Я делаю отправку электронной почты на Android-телефоне. Для этого я включил два файла jar activation. jar и mail.jar. Но когда я запускаю это приложение и пытаюсь отправить почту, я получил следующую ошибку на LogCat.

java.lang.NoClassDefFoundError: javax.activation.DataHandler 

Я новичок в android. поэтому я не могу понять эту проблему. пожалуйста помогите. Благодаря

4b9b3361

Ответ 1

Существует Android-порт javamail, который вы должны использовать. В вашем приложении должны быть три библиотеки: mail.jar, activation.jar и addnal.jar(sic). Похоже, что у вас отсутствует то, от чего зависит библиотека активации, и это может быть связано с тем, что вы не используете порт Android этой библиотеки.

Я успешно использовал версию javamail для Android в проекте, и она работает очень хорошо.

Ответ 2

Java Reference API Reference Version версии 1.5.5 и более поздней версии встроена поддержка Android и включить поддержку OAuth2.

В документации:

Android не обеспечивает совместимую с Java среду исполнения и поэтому не может запускать стандартный дистрибутив JavaMail. Вместо этого для Android доступна специальная версия JavaMail. Эта специальная версия JavaMail зависит от специальной версии JavaBeans Activation Framework.

Вы можете попробовать эту версию, добавив следующее в свой файл build.gradle для своего приложения для Android:

 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:

JavaMail для Android требует, по крайней мере, Android API уровня 19, что соответствует Android KitKat, в настоящее время самой старой поддерживаемой версией Android.