【发布时间】:2015-08-28 18:54:34
【问题描述】:
我正在使用的 gmail 客户端遇到异常。例外是
java.lang.NoClassDefFound 在 getDefaultInstance 行上触发
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 中,然后点击“添加为库”。我可以看到 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: Process 'command'/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/ java'' 以非零退出值 2 结束
有什么想法吗?
【问题讨论】:
-
请添加堆栈跟踪。
-
添加异常详细信息
-
你是如何运行你的程序的?从 IDE 还是命令行?
-
我从 Android Studio 运行应用程序。
-
您是否尝试反编译
dex并查看该类是否存在?
标签: java android android-studio google-api-java-client gmail-api