我正在处理我正在处理的gmail客户端中的异常。
是个例外 在getDefaultInstance行上触发的 java.lang.NoClassDefFound
Properties props = new Properties();
Session session = Session.getDefaultInstance(props, null);
我已经包含了javax jar,如下所示:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.google.android.gms:play-services:7.3.0'
compile 'com.google.api-client:google-api-client:1.20.0'
compile 'com.google.api-client:google-api-client-android:1.20.0'
compile 'com.google.api-client:google-api-client-gson:1.20.0'
compile 'com.google.apis:google-api-services-gmail:v1-rev29-1.20.0'
compile 'javax.mail:javax.mail-api:1.5.2'
}
我用谷歌搜索了这个,但不太确定如何解决这个问题。我已经尝试过清理和重建,但在这两种情况下仍然会抛出异常。任何帮助,将不胜感激。
执行细节消息:
Didn't find class "com.sun.mail.util.MailLogger" on path: DexPathList[[zip file "/data/app/com.android.application.androidgmailclient-2/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
更新
我发现缺少的类“MailLogger”不是javax.mail-api的一部分而是它是1.5.0-b01的'javax.mail:mail:1.5.0-b01'jar的一部分是最新版本:
http://mvnrepository.com/artifact/javax.mail/mail/1.5.0-b01
所以我将compile 'javax.mail:mail:1.5.0-b01'
包含在我的gradle文件中,然后在外部库中找到了jar。我将jar复制到app / libs然后点击“Add as Library”。我可以看到MailLogger类现在存在,这是异常中的轰炸。我的gradle文件现在看起来像这样:
apply plugin: 'com.android.application'
android {
compileSdkVersion 22
buildToolsVersion "23.0.0 rc2"
packagingOptions{
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
}
defaultConfig {
applicationId "com.android.app.androidgmailclient"
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.google.android.gms:play-services:7.3.0'
compile 'com.google.api-client:google-api-client:1.20.0'
compile 'com.google.api-client:google-api-client-android:1.20.0'
compile 'com.google.api-client:google-api-client-gson:1.20.0'
compile 'com.google.apis:google-api-services-gmail:v1-rev29-1.20.0'
compile 'javax.mail:mail:1.5.0-b01'
compile files('libs/mail-1.5.0-b01.jar')
}
然而,当我现在去构建项目时,我得到了这个构建错误:
错误:任务':app:dexDebug'执行失败。
com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:进程'command'/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/ java''以非零退出值2结束
有什么想法吗?
答案 0 :(得分:1)
发生此错误是因为您要添加两次相同的库。
compile 'javax.mail:mail:1.5.0-b01'
compile files('libs/mail-1.5.0-b01.jar')
删除其中一行然后我认为应该可以正常工作。
答案 1 :(得分:1)
不确定您是否已经解决了这个问题,但我发现您需要使用Android特定的Java Mail库。
# cd [Downloads]/ && yum install glibc-common-2.12-1.192.el6.x86_64.rpm glibc-2.12-1.192.el6.i686.rpm
我使用最新的Java Mail库遇到了您的错误和其他类似的错误,但切换到这些修复了所有这些库。
答案 2 :(得分:0)