Java NoClassDefFoundError异常android joda时间

Java NoClassDefFoundError异常android joda时间,java,android,jodatime,Java,Android,Jodatime,我正在构建一个应用程序,并在其中使用Joda Time,而不是java内置的日期/时间类。但我面临一个问题,当我使用 Android-API 22运行良好,但当我使用Android-API 23编译它时,它抛出NoClassDefFoundError异常。 我的构建。gradle正在跟踪 apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion '23.0.2'

我正在构建一个应用程序,并在其中使用Joda Time,而不是java内置的日期/时间类。但我面临一个问题,当我使用 Android-API 22运行良好,但当我使用Android-API 23编译它时,它抛出NoClassDefFoundError异常。 我的构建。gradle正在跟踪

apply plugin: 'com.android.application'
android {
    compileSdkVersion 23
    buildToolsVersion '23.0.2'
    defaultConfig {
    multiDexEnabled true
    applicationId 'com.my.app'
    minSdkVersion 11
    targetSdkVersion 23
    versionCode 6
    versionName '5.0.1'
    }
    buildTypes {
        release {
        //runProguard false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }
    sourceSets {
        main {
            assets.srcDirs = ['src/main/assets', 'src/main/assets/downloadMusicMishari', 'src/main/assets/downloadmusicSaad']
        }
    }
    dexOptions {
        incremental true
        javaMaxHeapSize "4g"
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
}
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    //compile 'com.android.support:support-v4:20.0.0'
    compile project(':facebook')
    compile project(':library')
    compile files('libs/PayPalAndroidSDK-2.9.10.jar')
    compile files('libs/picasso-2.5.2.jar')
    compile project(':justifiedTextViewmaster')
    compile 'joda-time:joda-time:2.3'
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.google.android.gms:play-services:8.3.0'
    compile 'com.android.support:multidex:1.0.0'
}

repositories {
    mavenCentral()
}
这是错误的屏幕截图。
NoClassDefFoundError

如果Java虚拟机或类加载器实例尝试 加载类的定义(作为普通方法调用的一部分 或者作为使用新表达式创建新实例的一部分)和 可以找到该类的定义

当前执行时已存在搜索的类定义 类已编译,但无法再找到该定义

请考虑使用专门为Android设计的JoDA库。您可能会问,为什么要使用此库而不是其他库。另一个有一个特别的问题。ie由于使用了
ClassLoader.getResourceAsStream()
,它极大地增加了应用程序的内存占用。(有关更多详细信息,请参阅。)此库避免了Android的问题

此外,该库还为Android设计了额外的实用程序。例如,请参见Android的一个端口

尝试更改
编译'joda time:joda time:2.3'

到:
编译'net.danlew:android.joda:2.9.1'

这很有效。我正在SDK 23的应用程序中使用它

编辑1

如果它是ISO8601格式,那么即使不使用Joda也可以解析它。这样:

try {
        DateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
        Date result = format.parse("2015-05-19T04:00:00.000Z");
        Calendar cal = Calendar.getInstance();
        cal.setTime(result);
        int year = cal.get(Calendar.YEAR);
        int month = cal.get(Calendar.MONTH);
        int day = cal.get(Calendar.DAY_OF_MONTH);
        output = day+" "+month+" "+year;
        Log.w("THE DATE IS:",""+output);
    }
    catch (Exception e){e.printStackTrace();}

NoClassDefFoundError

如果Java虚拟机或类加载器实例尝试 在类的定义中加载(作为普通方法调用的一部分或 作为使用新表达式创建新实例的一部分)和 可以找到该类的定义

请检查

尝试:

dependencies {
    compile 'net.danlew:android.joda:2.9.2' // For API Level 23 or Above
}
然后清理重建您的IDE

编辑

Removed Joda plugin
确保您初始化了JodaTimeAndroid.init(这个)

完成后,您必须在使用库之前初始化库 调用JodaTimeAndroid.init()。我建议把这个代码放进去 Application.onCreate():

最终编辑

Removed Joda plugin

你错过了一些要添加到类路径中的JAR,请将这些类添加到类路径中。@Naveenshryan我不太明白你的意思?右键单击你添加的库,有一个名为“添加到类路径”的选项单击该选项,我不确定它是否有效,但请再试一次,这个异常是因为这些类在编译时可用,但运行时JVM无法找到这些类,所以抛出这个异常。@Naveenshryan感谢您的评论。如果有帮助,我会告诉你的。如果有帮助,请告诉我。谢谢你的建议。我正在尝试它,并会让你知道,如果它有帮助,它没有工作应用程序崩溃与相同的例外你需要初始化Joda之前使用它?是你做的吗?是的,我现在正在尝试。就连我在建设项目时也经历过这种情况!目前还没有解决方案!谢谢你的建议。我正在尝试,如果成功,我会让你知道works@Tahir你在你的
应用程序中调用过这个吗
顺便说一句,在我迁移到API 23之前,我的应用程序在构建过程中花费了很多时间,比如超过10分钟,它总是在一分钟内构建。你认为问题出在哪里?不,还没有,我正在寻找一种不需要使用Joda插件的方法。我已经解决了我的问题,但我已经删除了Joda插件。谢谢你的帮助