2015-12-17 55 views
2

我收到此錯誤:java.lang.noClassDefFoundError在Android 4.4.4,適用於5.0+

12-17 03:59:18.767 7516-8610/io.ustube.ustube E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1 
                  Process: io.ustube.ustube, PID: 7516 
                  java.lang.RuntimeException: An error occured while executing doInBackground() 
                   at android.os.AsyncTask$3.done(AsyncTask.java:300) 
                   at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) 
                   at java.util.concurrent.FutureTask.setException(FutureTask.java:222) 
                   at java.util.concurrent.FutureTask.run(FutureTask.java:242) 
                   at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) 
                   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) 
                   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) 
                   at java.lang.Thread.run(Thread.java:841) 
                  Caused by: java.lang.NoClassDefFoundError: com.google.gson.internal.$Gson$Preconditions 
                   at com.google.gson.reflect.TypeToken.<init>(TypeToken.java:72) 
                   at com.google.gson.reflect.TypeToken.get(TypeToken.java:296) 
                   at com.google.gson.Gson.toJson(Gson.java:644) 
                   at com.google.gson.Gson.toJson(Gson.java:631) 
                   at com.google.gson.Gson.toJson(Gson.java:586) 
                   at com.google.gson.Gson.toJson(Gson.java:566) 
                   at io.ustube.ustube.LoginActivity$VerifyTask.doInBackground(LoginActivity.java:338) 
                   at io.ustube.ustube.LoginActivity$VerifyTask.doInBackground(LoginActivity.java:310) 
                   at android.os.AsyncTask$2.call(AsyncTask.java:288) 
                   at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
                   at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)  
                   at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)  
                   at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)  
                   at java.lang.Thread.run(Thread.java:841)  

,但我知道,提到類是依賴。我已經瀏覽了jar文件。另外,我只會得到5.0以下的錯誤。

我gradle這個文件包括compile 'com.google.code.gson:gson:2.5'

回答

0

這件事情發生了很多。您應該能夠通過執行以下操作來解決,

multiDexEnabled = false 
build.gradle文件

如果您已有multiDexEnabled = true,則將其更改爲false或添加此新行。

+0

這種行爲的原因是什麼? – thedarkpassenger

1

NoClassDefFoundError in Java comes when Java Virtual Machine is not able to find a particular class at runtime which was available during compile time. For example, if we have a method call from a class or accessing any static member of a Class and that class is not available during run-time then JVM will throw NoClassDefFoundError.

你可以嘗試用

compile 'com.google.code.gson:gson:2.3' 

然後,修改應用搖籃建立文件配置包括支持庫,並啓用multidex輸出。

android { 
    compileSdkVersion 21 // Set Yours 
    buildToolsVersion "21.1.0" // Set Yours 

    defaultConfig { 
     ... 
     minSdkVersion 14 
     targetSdkVersion 21 // Set Yours 
     ... 

     // Enabling multidex support. 
     multiDexEnabled true 
    } 
    ... 
} 

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

更多細節

DexIndexOverflowException Only When Running Tests

0

使用編譯 'com.android.support:multidex:1.0.0',然後在你的應用類擴展MultiDexApplication。

+1

添加一個代碼示例和額外的參考在哪裏可以找到更多詳細信息。它在閱讀時會幫助其他用戶。 –

相關問題