我收到此错误:
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 :(得分:1)
当Java虚拟机没有时,Java中会出现NoClassDefFoundError 能够在运行时找到特定的类 编译时间。例如,如果我们从类或方法调用方法 访问类的任何静态成员,该类不可用 在运行期间,JVM将抛出NoClassDefFoundError。
您可以尝试使用
compile 'com.google.code.gson:gson:2.3'
然后,修改您的应用Gradle构建文件配置以包含支持库并启用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'
}
更多详情
答案 1 :(得分:0)
这件事情发生了很多。您应该能够通过执行以下操作来解决问题,
multiDexEnabled = false
在build.gradle
文件中。
如果您已经multiDexEnabled = true
,请将其更改为false
或添加此新行。
答案 2 :(得分:0)
使用compile&#39; com.android.support:multidex:1.0.0&#39;然后在您的应用程序类中扩展MultiDexApplication。