来自Gradle的包含项目的java.lang.NoClassDefFoundError

时间:2016-02-10 17:38:55

标签: java android android-gradle noclassdeffounderror

我看过几个问题和答案,但我找不到答案。我不知道为什么我得到这个例外,你能帮我吗?

这是build.gradle文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "com.qbe.android.ui.activity"
        minSdkVersion 8
        targetSdkVersion 8
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_5
            targetCompatibility JavaVersion.VERSION_1_5
        }
        // Enabling multidex support.
        multiDexEnabled true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
    }
}

dependencies {
    compile project(':AndroidDomain')
    compile project(':AndroidData')
    compile project(':AndroidCommon')
    compile project(':AndroidService')

    compile files('lib/crittercism_v5_5_1_sdkonly.jar')
    compile files('lib/Android.Common-0.0.1.jar')

    compile 'com.android.support:multidex:1.0.0'
}

这是我的清单:

<application
    android:allowBackup="false"
    android:icon="@drawable/icon"
    android:label="@string/app_name"
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
    android:name="android.support.multidex.MultiDexApplication" >

这是我的错误日志:

Process: com.android.ui.activity, PID: 15755
java.lang.NoClassDefFoundError: com.android.common.entity.DatoTPValor
     at com.qbe.android.ui.activity.FiltrosActivity.bindWidgets(FiltrosActivity.java:182)
     at com.qbe.android.ui.activity.BaseActivity.onCreate(BaseActivity.java:62)
     at com.qbe.android.ui.activity.FiltrosActivity.onCreate(FiltrosActivity.java:157)
     at android.app.Activity.performCreate(Activity.java:6550)
     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120)
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3077)
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3233)
     at android.app.ActivityThread.access$1000(ActivityThread.java:197)
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656)
     at android.os.Handler.dispatchMessage(Handler.java:102)
     at android.os.Looper.loop(Looper.java:145)
     at android.app.ActivityThread.main(ActivityThread.java:6873)
     at java.lang.reflect.Method.invoke(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:372)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)

我已经尝试了gradle clean,gradle assemble,invalidate和restart cache,clean project,rebuild project,delete build project folders,并且没有任何效果。

希望你能帮助我

更新

这是settings.gradle文件:

include ':AndroidCommon'
include ':AndroidData'
include ':AndroidService'
include ':AndroidDomain'
include ':AndroidUI'

更新2

我认为这是一个问题,或Android Studio。我从gradle中删除了AndroidCommon的编译行,我可以完美地部署我的应用程序。它应该失败,因为应用程序使用此模块,但不会失败。你有什么想法吗?

更新3

嗯,我看到AndroidUI可以与AndroidCommon交互,因为如果我创建对象“Dato”,它可以很好地创建。但如果我把DatoTPValor包起来,那就失败了。 “Dato”和“DatoTPValor”都在同一个模块中。有什么想法吗?

我不知道为什么,但解决方案对我有用:

  • 我在AndroidCommon中使用了一个库(假设是library.jar)。在AndroidCommon模块的build.gradle文件中,添加了该库的依赖项。
  • 当我尝试创建一个从library.jar中的类继承的实例时,应用程序将抛出NoClassDefFoundError。
  • 我将library.jar添加到AndroidUI(Android项目)并在AndroidUI项目的build.gradle文件中添加依赖项。
  • 一切正常。

谢谢大家的时间,抱歉我的英语不好

0 个答案:

没有答案