2016-05-11 5 views
4

私は自分で構築したアンドロイドライブラリに依存するアンドロイドアプリケーションを持っています。 build.gradleで指定されたライブラリ依存関係を使用してアプリケーションをビルドすると、次の例外が発生します。java.lang.NoClassDefFoundError:Lorg/jacoco/agent/rt/internal_773e439/Offlineの解決に失敗しました。

-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() 
    } 
} 

答えて

4

私はAndroidのメーカーを更新した後、このエラーを得ました。私は設定でインスタント・ランをオフにしてそれを修正したことを知りました。

+0

設定でインスタント実行オプションはどこですか? Android Studio 1.5.1では表示されないため、古いバージョンには存在しない可能性があります。 – Tbadams

+0

@Tbadams Instant Runは現在、Android Studio 2.0以降でのみ利用可能です。したがって、古いバージョンでこの問題が発生した場合は、理由が異なる可能性があります。 – Topo

+0

これで問題が解決されない – LeoNeo

2

hereによれば、クラスパスにはjacocoagent.jarが必要です。つまり、同じバージョンのjacocoagent.jarをgradleでコンパイルする必要があります。

まず、バージョンコードhere(状況はバージョン0.7.4.201502262128)を確認してから、hereからjarファイルをダウンロードしてください。

jacocoagent.jarをlibsフォルダに入れてから、をアプリのbuild.gradleに追加してください。

+0

ライブラリとアプリケーションの両方であなたの提案を試みました。何も変わっていないようです。私の実装に、この例外が私の場合にのみポップアップするという欠陥があるのか​​どうか疑問に思っています。私はこの問題に直面している他の多くの人たちを見ていない! : - / – LeoNeo

0

bijangが正しいです。 jacocoagent.jarを追加する必要があります。瓶を直接入れるのではなく、瓶から引き出します。 jacocoagentのバージョンは、Offline.classパッケージにコミットハッシュがあるため、jacocopluginのバージョンと一致する必要があります。ここに私の依存関係は、次のとおりです。

コンパイル 'org.jacoco:jacoco-mavenの-プラグイン:0.7.9'

コンパイル 'org.jacoco:org.jacoco.agent:0.7.9:ランタイム'

関連する問題