2016-11-30 57 views
4

我使用Android的數據視圖中庫項目的ClassNotFoundException:找不到類「android.databinding.DataBinderMapper」

我有我的根文件的gradle添加以下行綁定庫

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

,並啓用了數據綁定在模塊的gradle這個文件

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

下面給出我已經啓用了萬畝ltiDex在我的庫項目 以及在主機應用程序,它使用這個庫 ,但我得到這個錯誤堆棧跟蹤,同時推出了圖書館的活動

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 
+0

發表您的gradle這個文件的 –

+1

可能的複製[Android的數據綁定:缺少DataBinderMapper類] (http://stackoverflow.com/questions/30554646/android-data-binding-missing-databindermapper-class) – Rahul

+0

嘗試使無效緩存並重新啓動Android Studio – Rahul

回答

3

終於我能解決這個問題。 看來應用程序的apt版本和庫模塊之間存在衝突。

在應用中容易版本升級到

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' 
0

類路徑「com.android.databinding:DataBinder的:1.0 -rc1'

應用插件: 'com.android.databinding'

刪除庫。來自gradle。

4

確保使用數據綁定你的所有模塊都啓用它。這是我得到這個例外的原因。

android { 
    .... 
    dataBinding { 
     enabled = true 
    } 
} 
+1

同樣適用於我。有我自己的lib和多個應用程序。必須同時添加到lib和應用程序gradle文件。謝謝。 – Henrik

+0

是的,謝謝。那是我的問題。 – pratt

+0

你真棒謝謝:) –

0

我有同樣的問題,但我解決它消除

類路徑 'com.neenbedankt.gradle.plugins:1.8:Android的易' 從全局構建

.gradle and removing

apply plugin:'android-apt'

從本地build.gradle,然後它像一個魅力工作。

它似乎也是Butterknife的混合問題。很奇怪。

2

最好的猜測。擺脫android-apt

如果有使用apt

代替apt 'lt.mdm.sdd:myLib:1.5.1'使用 annotationProcessor 'lt.mdm.sdd:myLib:1.5.1'庫。

我不確定這是否會對您有所幫助,而且我不知道庫自身是否應該更改。

它幫助我(至少使用androidannotations.org舊版本的apt)。

更新

,我不知道爲什麼你apply plugin: 'com.android.databinding'?它也沒有它。

0

除了增加以下內容build.gradle

android { 
    dataBinding { 
     enabled = true 
    } 
} 

我還必須添加以下依賴:

dependencies { 
    kapt 'com.android.databinding:compiler:3.0.1' 
} 
相關問題