web-dev-qa-db-ja.com

ClassNotFoundException:クラス「Android.databinding.DataBinderMapper」が見つかりませんでした

のビューにAndroidのデータバインディングライブラリを使用しています 図書館プロジェクト

ルートgradleファイルに次の行を追加しました

classpath 'com.Android.databinding:dataBinder:1.0-rc1'

モジュールのgradleファイルで以下のようにdataBindingを有効にしました

apply plugin: 'com.Android.databinding'
...
...
Android {
....
  dataBinding {
      enabled = true
  }
}

ライブラリプロジェクトと、このライブラリを使用しているホストアプリでmultiDexを有効にしましたが、ライブラリのアクティビティを起動しているときにエラーのこのスタックトレースを取得します

Java.lang.NoClassDefFoundError: Failed resolution of: Landroid/databinding/DataBinderMapper;
    at Android.databinding.DataBindingUtil.<clinit>(DataBindingUtil.Java:31)
    at sdk.ui.activities.MyActivity.onCreate(MyActivity.Java:76)
    at Android.app.Activity.performCreate(Activity.Java:6280)
    at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1116)
    at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2534)
    at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2647)
    at Android.app.ActivityThread.-wrap11(ActivityThread.Java)
    at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1502)
    at Android.os.Handler.dispatchMessage(Handler.Java:111)
    at Android.os.Looper.loop(Looper.Java:207)
    at Android.app.ActivityThread.main(ActivityThread.Java:5763)
    at Java.lang.reflect.Method.invoke(Native Method)
    at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:888)
    at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:749)
Caused by: Java.lang.ClassNotFoundException: Didn't find class "Android.databinding.DataBinderMapper" on path: DexPathList[[Zip file "/data/app/testApp.dev-1/base.apk"],nativeLibraryDirectories=[/data/app/testApp.dev-1/lib/arm64, /data/app/testApp.dev-1/base.apk!/lib/arm64-v8a, /vendor/lib64, /system/lib64]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.Java:56)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:511)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:469)
    at Android.databinding.DataBindingUtil.<clinit>(DataBindingUtil.Java:31) 
    at sdk.ui.activities.MyActivity.onCreate(MyActivity.Java:76) 
    at Android.app.Activity.performCreate(Activity.Java:6280) 
    at Android.app.Instrumentation.callActivityOnCreate(Instrumentation.Java:1116) 
    at Android.app.ActivityThread.performLaunchActivity(ActivityThread.Java:2534) 
    at Android.app.ActivityThread.handleLaunchActivity(ActivityThread.Java:2647) 
    at Android.app.ActivityThread.-wrap11(ActivityThread.Java) 
    at Android.app.ActivityThread$H.handleMessage(ActivityThread.Java:1502) 
    at Android.os.Handler.dispatchMessage(Handler.Java:111) 
    at Android.os.Looper.loop(Looper.Java:207) 
    at Android.app.ActivityThread.main(ActivityThread.Java:5763) 
    at Java.lang.reflect.Method.invoke(Native Method) 
    at com.Android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.Java:888) 
    at com.Android.internal.os.ZygoteInit.main(ZygoteInit.Java:749) 
Suppressed: Java.lang.ClassNotFoundException: Android.databinding.DataBinderMapper
    at Java.lang.Class.classForName(Native Method)
    at Java.lang.BootClassLoader.findClass(ClassLoader.Java:781)
    at Java.lang.BootClassLoader.loadClass(ClassLoader.Java:841)
    at Java.lang.ClassLoader.loadClass(ClassLoader.Java:504)
        ... 15 more
Caused by: Java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available
18
A. kanojia

最終的に私はこの問題を解決することができました。アプリのaptバージョンとライブラリモジュールの間に矛盾があったようです。

アプリのaptバージョンを

classpath 'com.neenbedankt.gradle.plugins:Android-apt:1.8'
5
A. kanojia

DataBindingを使用するすべてのモジュールで有効になっていることを確認してください。これが私がその例外を得た理由でした。

Android {
    ....
    dataBinding {
        enabled = true
    }
}
23
Bolein95

以下をbuild.gradleに追加するほか:

Android {
    dataBinding {
        enabled = true
    }
}

また、次の依存関係も追加する必要があります。

dependencies {
    kapt 'com.Android.databinding:compiler:3.0.1'
}
3
chengsam

最良の推測。取り除く Android-apt

aptを使用するライブラリがある場合

の代わりに apt 'lt.mdm.sdd:myLib:1.5.1' 使用する annotationProcessor 'lt.mdm.sdd:myLib:1.5.1'

これがあなたを助けるかどうかはわかりませんが、ライブラリ自体を変更すべきかどうかはわかりません。

それは私を助けました(私はandroidannotations.org少なくとも古いバージョン。

更新

そして、なぜあなたはapply plugin: 'com.Android.databinding'?それなしでも動作します。

2
Alpha

クラスパス 'com.Android.databinding:dataBinder:1.0-rc1'

プラグインの適用: 'com.Android.databinding'

そのライブラリを削除します。グラドルから。

0
Lovekesh

私は同じ問題を抱えていましたが、それを削除して解決しました

クラスパス「com.neenbedankt.gradle.plugins:Android-apt:1.8」

グローバルbuild.gradleから削除

プラグインの適用:「Android-apt」

ローカルbuild.gradleから、それは魅力のように働いた。

Butterknifeとの混合問題でもあったようです。かなり奇妙です。

0
Jorge Enciso