应用程序:dexDebug - 意外的顶级例外 - 在AsyncTask上 [英] app:dexDebug - UNEXPECTED TOP-LEVEL EXCEPTION - on AsyncTask

查看:146
本文介绍了应用程序:dexDebug - 意外的顶级例外 - 在AsyncTask上的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述



我得到了可怕的dexDebug错误,但是这次我不知道如何解决它。

>

确切的错误是:

 信息:Gradle tasks [:app:assembleDebug ] 
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72221Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42300Library UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
: app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:processDebugResources UP-TO-DATE
:app:generateDebugSo urces UP-TO-DATE
:app:processDebugJavaRes UP-TO-DATE
:app:compileDebugJavaWithJavac
注意:某些输入文件使用或覆盖弃用的API。
注意:使用-Xlint:deprecation重新编译以获取详细信息。
:app:compileDebugNdk UP-TO-DATE
:app:compileDebugSources
:app:preDexDebug
:app:dexDebug
意外的顶级例外:
com.android.dex.util.ExceptionWithContext
at com.android.dex.util.ExceptionWithContext.withContext(ExceptionWithContext.java:45)
at com.android.dx.dex.cf.CfTranslator。 processMethods(CfTranslator.java:369)
at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:137)
at com.android.dx.dex.cf.CfTranslator。在com.android.dx.command.dexer.Main.processClass(Main.java:729)
处翻译(CfTranslator.java:93)
com.android.dx.command.dexer.Main。 processFileBytes(Main.java:673)
at com.android.dx.command.dexer.Main.access $ 300(Main.java:83)
at com.android.dx.command.dexer.Main $ 1.processFileBytes(Main.java:602)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:170)
at com.android.dx.cf.direct。 ClassPathOpener.processDirectory(柯乐sPathOpener.java:229)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
at com.android.dx.cf.direct.ClassPathOpener.processDirectory( ClassPathOpener.java:229)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
at com.android.dx.cf.direct.ClassPathOpener.processDirectory( ClassPathOpener.java:229)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
at com.android.dx.cf.direct.ClassPathOpener.processDirectory( ClassPathOpener.java:229)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
at com.android.dx.cf.direct.ClassPathOpener.processDirectory( ClassPathOpener.java:229)
at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
at com.android.dx.cf.direct.ClassPathOpener.process( ClassPathOpener.java:144)
at com.android.dx.command.dexer.Main.processOne( Main.java:632)
at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)
at com.android.dx.command.dexer.Main.runMonoDex( Main.java:280)
at com.android.dx.command.dexer.Main.run(Main.java:246)
at com.android.dx.command.dexer.Main.main( Main.java:215)
at com.android.dx.command.Main.main(Main.java:106)
引起:java.lang.NullPointerException $ b $ com com.android。 dx.cf.code.ConcreteMethod。< init>(ConcreteMethod.java:87)
at com.android.dx.cf.code.ConcreteMethod。< init>(ConcreteMethod.java:75)
at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:271)
... 24 more
... while processing< init> (Lcom / appzylabs / pratik / dailydeals / WebFragment;)V
...处理com / appzylabs / pratik / dailydeals / WebFragment $ 1.class
1错误;中止
错误:任务':app:dexDebug'的执行失败。
> com.android.ide.common.process.ProcessException:org.gradle.process.internal.ExecException:进程'命令'C:\程序文件\Java\jdk1.7.0_71\bin\java.exe' '完成非零退出价值1
信息:BUILD FAILED
信息:总时间:16.398秒
信息:1错误
信息:0警告
信息:请参阅控制台中的完整输出

我只有两个依赖项和一个相当干净的app.gradle,如下所示:

  apply plugin:'com.android.application'

android {
compileSdkVersion 22
buildToolsVersion22.0.1

defaultConfig {
applicationIdcom.appzylabs.pratik.dailydeals
minSdkVersion 8
targetSdkVersion 22
versionCode 1
versionName1.0

}
buildTypes {
release {
minifyEnabled true
proguard文件getDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'
}
}
}

依赖项{
编译fileTree (包括:['* .jar'],dir:'libs')
编译'com.android.support:appcompat-v7:22.2.1'
compile'c​​om.android.support:support -v4:23.0.0'
}

以下是我尝试解决的问题这,无济于事:
1)我包括JSoup的jar,但我删除了它。没有帮助。
2)我在AndroidManifest.xml中添加了multidex支持(multiDexEnabled true)和android:name =android.support.multidex.MultiDexApplication。纳达。
3)我做了一个clean / build,并清除了缓存并重新启动了android studio。再次,没有。



请注意,这只是在我尝试运行asyncTask时发生的。如果我注释掉该行,它就会像魅力一样编译:

  new MyLoadWebView()。execute(); 

有什么问题?有人可以帮忙吗?

解决方案

好的,基于 Android dex问题:嵌套类+最终布尔:com.android.dex.util.ExceptionWithContext ,我认为我为异步任务创建的内部类有些问题。所以我所做的是将AsyncTask的类声明从private改为public:

  private class MyLoadWebView extends AsyncTask< String,空洞,空洞> {.. 

  public class MyInnerLoadWebView扩展AsyncTask< String,Void,Void> {.. 

它运作良好!!!!



我仍然不知道这是为什么,但似乎是一个严重的错误。有什么意见?


Oh how I hate this error.

I'm getting the dreaded dexDebug error, but this time around I have no idea how to fix it.

The exact error is:

 Information:Gradle tasks [:app:assembleDebug]
:app:preBuild UP-TO-DATE
:app:preDebugBuild UP-TO-DATE
:app:checkDebugManifest
:app:preReleaseBuild UP-TO-DATE
:app:prepareComAndroidSupportAppcompatV72221Library UP-TO-DATE
:app:prepareComAndroidSupportSupportV42300Library UP-TO-DATE
:app:prepareDebugDependencies
:app:compileDebugAidl UP-TO-DATE
:app:compileDebugRenderscript UP-TO-DATE
:app:generateDebugBuildConfig UP-TO-DATE
:app:generateDebugAssets UP-TO-DATE
:app:mergeDebugAssets UP-TO-DATE
:app:generateDebugResValues UP-TO-DATE
:app:generateDebugResources UP-TO-DATE
:app:mergeDebugResources UP-TO-DATE
:app:processDebugManifest UP-TO-DATE
:app:processDebugResources UP-TO-DATE
:app:generateDebugSources UP-TO-DATE
:app:processDebugJavaRes UP-TO-DATE
:app:compileDebugJavaWithJavac
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
:app:compileDebugNdk UP-TO-DATE
:app:compileDebugSources
:app:preDexDebug
:app:dexDebug
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.util.ExceptionWithContext
    at com.android.dex.util.ExceptionWithContext.withContext(ExceptionWithContext.java:45)
    at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:369)
    at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:137)
    at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:93)
    at com.android.dx.command.dexer.Main.processClass(Main.java:729)
    at com.android.dx.command.dexer.Main.processFileBytes(Main.java:673)
    at com.android.dx.command.dexer.Main.access$300(Main.java:83)
    at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:602)
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:170)
    at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
    at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
    at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
    at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
    at com.android.dx.cf.direct.ClassPathOpener.processDirectory(ClassPathOpener.java:229)
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:158)
    at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
    at com.android.dx.command.dexer.Main.processOne(Main.java:632)
    at com.android.dx.command.dexer.Main.processAllFiles(Main.java:510)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:280)
    at com.android.dx.command.dexer.Main.run(Main.java:246)
    at com.android.dx.command.dexer.Main.main(Main.java:215)
    at com.android.dx.command.Main.main(Main.java:106)
Caused by: java.lang.NullPointerException
    at com.android.dx.cf.code.ConcreteMethod.<init>(ConcreteMethod.java:87)
    at com.android.dx.cf.code.ConcreteMethod.<init>(ConcreteMethod.java:75)
    at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:271)
    ... 24 more
...while processing <init> (Lcom/appzylabs/pratik/dailydeals/WebFragment;)V
...while processing com/appzylabs/pratik/dailydeals/WebFragment$1.class
1 error; aborting
Error:Execution failed for task ':app:dexDebug'.
> com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:\Program Files\Java\jdk1.7.0_71\bin\java.exe'' finished with non-zero exit value 1
Information:BUILD FAILED
Information:Total time: 16.398 secs
Information:1 error
Information:0 warnings
Information:See complete output in console

I have only two dependencies and a fairly clean app.gradle as below:

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.appzylabs.pratik.dailydeals"
        minSdkVersion 8
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"

    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:22.2.1'
    compile 'com.android.support:support-v4:23.0.0'
}

Here are the things I have tried to fix this, to no avail: 1) I was including the jar for JSoup but I removed that. No help. 2) I added multidex support (multiDexEnabled true) AND android:name="android.support.multidex.MultiDexApplication" in my AndroidManifest.xml. Nada. 3) I did a clean/build, and cleared caches and restarted android studio. Again, nothing.

Note that this is happening ONLY when I am trying to run an asyncTask. If I comment out that line it compiles like a charm:

new MyLoadWebView().execute("");

What is the issue? Can someone help please?

解决方案

OK, based on Android dex issue: nested class + final boolean : com.android.dex.util.ExceptionWithContext, I figured there is something wrong with the inner class I am creating for the async task. So what I did was I changed the class declaration of the AsyncTask from private to public:

private class MyLoadWebView extends AsyncTask<String, Void, Void> { ..

to

public class MyInnerLoadWebView extends AsyncTask<String, Void, Void> { ..

And it worked!!!!

I still don't know why this is, but seems like a serious bug. Any comments?

这篇关于应用程序:dexDebug - 意外的顶级例外 - 在AsyncTask上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆