为什么java.lang.NoClassDefFoundError在同一个包中?

时间:2016-04-21 13:21:06

标签: java android class android-gradle gradle-dependencies

A类引用B类。它们位于同一个包中。因此A不会导入B.并且不会出现编译错误。但是当我得到A类Object并调用ClassA.getDeclaredMethods时,会发生异常:

java.lang.NoClassDefFoundError:xxx.xxx.B?

但是当我在A中导入B类的父接口并且同时将A&#39的方法返回类型从B更改为B的父接口时。没关系。

我尝试了两个Android设备,但错误都发生了。

为什么呢?

PS:我从日志中得到了这个原因

04-21 21:31:25.005 W/dalvikvm(21707): Class resolved by unexpected DEX: Lxxx/xxxx/xxxx/methods/FieldsConfig;(0x42a18bd8):0x76e66000 ref [Lxxx/xxxx/xxxx/ITelephonyManagerInterface$IFieldsConfig;] Lxxx/xxxx/xxxx/ITelephonyManagerInterface$IFieldsConfig;(0x42a18bd8):0x76d17000
04-21 21:31:25.005 W/dalvikvm(21707): (Lxxx/xxxx/xxxx/methods/FieldsConfig; had used a different Lxxx/xxxx/xxxx/ITelephonyManagerInterface$IFieldsConfig; during pre-verification)
04-21 21:31:25.005 W/dalvikvm(21707): Link of class 'Lxxx/xxxx/xxxx/methods/FieldsConfig;' failed

我从两个dex加载一个类。

    compile project(":base")

    androidTestCompile project(':AAAA')  // only androidTest
    androidTestCompile project(':BBBB')
    androidTestCompile project(':CCCC') {
        exclude project(":base")  //how I exclude one project??
    }//only androidTest

现在又来了一个问题。 如何从androidTestCompile项目中排除项目(":base")(':CCCC')?

0 个答案:

没有答案