当前位置: 首页 > 知识库问答 >
问题:

Java语言lang.NoClassDefFound错误javax Gmail API

秦权
2023-03-14

我正在处理的gmail客户端出现异常。例外情况是

java.lang.在getDefaultInstance行上触发的NoClassDefFind

   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的一部分。邮件api,而它是“javax”的一部分。邮件:mail:1.5.0-b01'jar,其中1.5.0-b01是最新版本:

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:进程'命令'/系统/库/Java /JavaVirtualMachines/1.6.0.jdk/Contents/Home/bin/java"以非零退出值结束2

有什么想法吗?

共有3个答案

仲和韵
2023-03-14

我假设您已经成功编译了代码,但遇到了运行时异常。您需要在最终包中包含jar文件。看看这个和这个。

索瀚海
2023-03-14

发生此错误是因为您两次添加相同的库。

compile 'javax.mail:mail:1.5.0-b01'
compile files('libs/mail-1.5.0-b01.jar')

删除其中一行,然后我认为它应该可以正常工作。

楚嘉纳
2023-03-14

不确定您是否已经解决了这个问题,但我发现您需要使用特定于Android的Java邮件库。

compile 'com.sun.mail:android-mail:1.5.5'
compile 'com.sun.mail:android-activation:1.5.5'

我遇到了你的错误和其他类似的使用最新的Java邮件库,但切换到这些修复了所有这些。

https://java.net/projects/javamail/pages/Android

Android Studio:NoClassDefFoundError

 类似资料:
  • 问题内容: 我有一个简单的Java程序,它无法按照我认为的方式运行。 为什么这不打印出2.5? 问题答案: 5/2是整数除法(您甚至将其存储在整数变量中),如果希望将其设为2.5,则需要使用浮点除法: 整数除法总是等于四舍五入到最接近整数的普通数学除法。

  • 问题内容: 安装最新的Mac OSX 64位Anaconda Python发行版后,尝试启动时,我始终收到。 启动ipython可以正常工作: 但是启动ipython笔记本: 结果出现(带有回溯): locale从终端运行命令: 问题答案: 我将这些行添加到我的.: 我重新加载了个人资料: 然后我又跑ipython了: 变更地区 以上内容适用于美国语言环境中的英语。可能需要不同的设置。 为了发现明

  • 而我不断收到消息“断言错误”。我不知道为什么。如果我将更改为它工作得很好,那么为什么它不能与getPageSource一起工作呢?

  • 它是一个命令行程序。试图使用java.net.http模块发送POST调用,但我一直收到以下错误。 Intellij project SDK-java 11.0.10版 代码-

  • 当godownname和itemname匹配时,我想从表中获取最后可用的余额。 我试了一些代码。但是我对Oracle中的函数有一个问题。 我得到了错误: 严重:空java。sql。SQLSyntaxerRorexException:ORA-00907:oracle缺少右括号。jdbc。驾驶员t4cttiore。oracle的processError(t4cttiore.java:450) 。jdb

  • 问题内容: 我对Swift的了解还不够多,但是我注意到的一件事是没有例外。那么如何在Swift中进行错误处理呢?有没有人发现任何与错误处理相关的信息? 问题答案: 斯威夫特2&3 Swift 2中的情况有所变化,因为有了新的错误处理机制,该机制与异常有些相似,但在细节上有所不同。 1.指示错误可能性 如果函数/方法想要表明它可能抛出错误,则应包含这样的关键字 注意:函数没有实际抛出的错误类型的规范