【问题标题】:java.lang.NoClassDefFoundError: Failed resolution of: Lorg/jacoco/agent/rt/internal_773e439/Offline;java.lang.NoClassDefFoundError:解析失败:Lorg/jacoco/agent/rt/internal_773e439/Offline;
【发布时间】:2016-05-11 03:25:48
【问题描述】:

我有一个 android 应用程序,它依赖于我自己构建的一些 android 库。 如果我使用 build.gradle 中指定的库依赖项构建应用程序,则会出现以下异常。

-6694/com.mycompany.myproject D/AndroidRuntime: Shutting down VM
05-10 18:47:55.986 6694-6694/com.mycompany.myproject E/AndroidRuntime: FATAL EXCEPTION: main
                                                                        Process: com.mycompany.myproject, PID: 6694
                                                                        java.lang.NoClassDefFoundError: Failed resolution of: Lorg/jacoco/agent/rt/internal_773e439/Offline;
                                                                            at com.mycompany.ui.components.ListArrayAdapter.$jacocoInit(ListArrayAdapter.java)
                                                                            at com.mycompany.ui.components.ListArrayAdapter.<init>(ListArrayAdapter.java)
                                                                            at com.mycompany.myproject.NationalityFragment.onCreateView(NationalityFragment.java:47)
                                                                            at android.support.v4.app.Fragment.performCreateView(Fragment.java:1974)
                                                                            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1067)
                                                                            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1252)
                                                                            at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:742)
                                                                            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1617)
                                                                            at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:339)
                                                                            at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:602)
                                                                            at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1220)
                                                                            at android.app.Activity.performStart(Activity.java:5953)
                                                                            at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2261)
                                                                            at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
                                                                            at android.app.ActivityThread.access$800(ActivityThread.java:144)
                                                                            at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
                                                                            at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                            at android.os.Looper.loop(Looper.java:135)
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5221)
                                                                            at java.lang.reflect.Method.invoke(Native Method)
                                                                            at java.lang.reflect.Method.invoke(Method.java:372)
                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
                                                                            at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

如果我删除依赖项,而是从库中复制相关类并运行应用程序,它运行得非常好。 此外,我还有其他依赖项,例如 junit 和 app-compat,这些似乎不会导致此问题。任何想法可能导致此问题?

  • 我已尝试将 jacoco 插件指定为以下版本 它似乎仍然不起作用。
  • 我已尝试从库中删除 jacoco 依赖项:否 效果。

我的主要 build.gradle 看起来像这样:

    task wrapper(type: Wrapper) {
    gradleVersion = '2.13'
}

buildscript {
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
        classpath 'com.github.dcendents:android-maven-gradle-plugin:1.3'
    }
}

subprojects {
    project.ext.set('compileSdkVersion', 23)
    project.ext.set('buildToolsVersion', '23.0.3')

    project.ext.set('minSdkVersion', 19)
    project.ext.set('targetSdkVersion', 23)
    project.ext.set('versionCode', 1)
    project.ext.set('versionName', '1.0-SNAPSHOT')

    project.ext.set('javaVersion', JavaVersion.VERSION_1_7)

    group 'com.mycompany.myproject'
    version = project.ext.get('versionName')

    repositories {
        mavenLocal()
        mavenCentral()
    }
}

【问题讨论】:

    标签: android android-library jacoco


    【解决方案1】:

    对于 Jacoco 0.8.7,我将以下内容添加到 app/build.gradle 以解决问题

    implementation 'org.jacoco:org.jacoco.agent:0.8.7'
    

    【讨论】:

      【解决方案2】:

      更新 Android Studio 后出现此错误。我发现在设置中关闭 Instant Run 可以解决这个问题。

      【讨论】:

      • “设置”中的“即时运行”选项在哪里?我在 Android Studio 1.5.1 中没有看到它,所以它可能在旧版本中不存在。
      • @Tbadams Instant Run 目前仅在 Android Studio 2.0 及更高版本中可用。所以如果你在旧版本中遇到这个问题,原因可能不同
      【解决方案3】:

      根据here,您需要将jacocoagent.jar 放在类路径中。换句话说,您需要在 gradle 中编译相同版本的 jacocoagent.jar

      首先检查版本代码here(你的情况是版本0.7.4.201502262128)然后从here下载jar。

      jacocoagent.jar 放入libs 文件夹,然后将compile fileTree(dir: 'libs', include: ['jacocoagent.jar']) 添加到您应用的build.gradle

      【讨论】:

      • 我在库和应用程序上都尝试了您的建议。似乎什么都没有改变。我想知道我的实现是否存在导致此异常仅在我的情况下弹出的缺陷。我没有看到很多其他人面临这个问题! :-/
      【解决方案4】:

      bijang 是正确的。您需要添加 jacocoagent.jar。与其直接包含罐子,不如从 Maven 中将其拉下。 jacocoagent 的版本必须与 jacocoplugin 的版本相匹配,因为 Offline.class 包有一个提交哈希。这是我的依赖项:

      编译'org.jacoco:jacoco-maven-plugin:0.7.9'

      编译'org.jacoco:org.jacoco.agent:0.7.9:runtime'

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-10-31
        • 2019-01-23
        • 2017-01-17
        • 1970-01-01
        • 1970-01-01
        • 2019-04-18
        • 1970-01-01
        相关资源
        最近更新 更多