1

クラス A はクラス B を参照します。これらは同じパッケージ内にあります。したがって、A は B をインポートしません。また、コンパイル エラーは表示されません。しかし、クラス オブジェクトを取得して ClassA.getDeclaredMethods を呼び出すと、例外が発生します。

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

しかし、クラス B の親インターフェイスを A にインポートし、A のメソッドの戻り値の型を B から B の親インターフェイスに同時に明確に変更すると。大丈夫です。

2 つの 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

2 つの dex から 1 つのクラスをロードします。

    compile project(":base")

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

ここで、別の質問が来ます。project(":base") を androidTestCompile project(':CCCC') から除外するにはどうすればよいですか?

4

0 に答える 0