web-dev-qa-db-ja.com

Dagger 2、時にはコンパイル時に「シンボルクラスDaggerApplicationComponentが見つかりません」と表示される

更新後の最近のAndroid St​​udio(2.0.7)(これが原因である可能性があります)ビルド中にエラーが発生することがあります。

アイデアは、通常コンパイルはうまくいくということですが、時々短剣エラーが発生します。

ダガー構成で問題になる可能性はありますか?

エラー自体:

Executing tasks: [:app:assembleDebug]

Configuration on demand is an incubating feature. Incremental Java compilation is an incubating feature. :app:preBuild UP-TO-DATE :app:preDebugBuild UP-TO-DATE :app:checkDebugManifest :app:preReleaseBuild UP-TO-DATE :app:prepareComAndroidSupportAppcompatV72311Library UP-TO-DATE :app:prepareComAndroidSupportDesign2311Library UP-TO-DATE :app:prepareComAndroidSupportMultidex101Library UP-TO-DATE :app:prepareComAndroidSupportRecyclerviewV72311Library UP-TO-DATE :app:prepareComAndroidSupportSupportV42311Library UP-TO-DATE :app:prepareComDaimajiaSwipelayoutLibrary120Library UP-TO-DATE :app:prepareComF2prateekRxPreferencesRxPreferences101Library UP-TO-DATE :app:prepareComGithubAakiraExpandableLayout141Library UP-TO-DATE :app:prepareComGithubAfollestadMaterialDialogsCore0842Library UP-TO-DATE :app:prepareComGithubCastorflexSmoothprogressbarLibraryCircular120Library UP-TO-DATE :app:prepareComJakewhartonRxbindingRxbinding030Library UP-TO-DATE :app:prepareComPnikosisMaterialishProgress17Library UP-TO-DATE :app:prepareComTrelloRxlifecycle040Library UP-TO-DATE :app:prepareComTrelloRxlifecycleComponents040Library UP-TO-DATE :app:prepareComWdullaerMaterialdatetimepicker211Library UP-TO-DATE :app:prepareIoReactivexRxandroid110Library UP-TO-DATE :app:prepareMeRelexCircleindicator116Library UP-TO-DATE :app:prepareMeZhanghaiAndroidMaterialprogressbarLibrary114Library 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:compileDebugJavaWithJavac /home/ungvas/AndroidDev/Projects/FW/paynet-Android/app/src/main/Java/md/fusionworks/paynet/ui/activity/BaseActivity.Java:23: error: cannot find symbol import md.fusionworks.paynet.di.component.DaggerActivityComponent; ^ symbol: class DaggerActivityComponent location: package md.fusionworks.paynet.di.component /home/ungvas/AndroidDev/Projects/FW/paynet-Android/app/src/main/Java/md/fusionworks/paynet/PaynetApplication.Java:7: error: cannot find symbol import md.fusionworks.paynet.di.component.DaggerApplicationComponent; ^ symbol: class DaggerApplicationComponent location: package md.fusionworks.paynet.di.component 2 errors

Incremental compilation of 66 classes completed in 3.719 secs. :app:compileDebugJavaWithJavac FAILED :app:compileRetrolambdaDebug

FAILURE: Build failed with an exception.

  • What went wrong: Execution failed for task ':app:compileDebugJavaWithJavac'.

    Compilation failed; see the compiler error output for details.

  • Try: Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 19.556 secs
ありがとう。

48
user1542447

Gradle 2.10で追加されたインクリメンタルコンパイルと関係があるようです

私はそれを修正して次のコマンドをgradleに追加しました:

-Pandroid.incrementalJavaCompile=false

Android St​​udioの次の場所に追加できます:File |設定|ビルド、実行、展開|コンパイラーコマンドラインオプションとして追加します。

edit2.0.0-beta現在、プラグインはこのオプションがGradle DSLに追加されたことを知らせる警告を表示します:

Android {
    compileOptions.incremental = false
}
27
DanielDiSu

短剣のバージョン2.11を更新する必要があります。

build.gradleの-​​依存関係ブロックは次のようになります。

dependencies {
    // Other dependencies should go here
    compile "com.google.dagger:dagger:2.11"
    annotationProcessor "com.google.dagger:dagger-compiler:2.11"
    provided 'javax.annotation:jsr250-api:1.0'
    compile 'javax.inject:javax.inject:1'
}

お役に立てれば。

5
Hiren Patel

2017年の変更:

Android Studio Canaryは新しいバージョンのGradleを使用しており、aptプラグインが機能しない場合があり、annotationProcessorに置き換えられます。 gradleの将来のバージョンで削除されるとコンパイラが警告しているにもかかわらず、失敗する可能性があります。

この依存関係の行を変更します。

apt 'com.google.dagger:dagger-compiler:2.7'

annotationProcessor 'com.google.dagger:dagger-compiler:2.7'

aptプラグインを削除します。

5
KATHYxx

Daggerの最新バージョン(2.8)がこのエラーの原因です。依存関係が下記のとおりであることを確認してください

apt 'com.google.dagger:dagger-compiler:2.7' compile 'com.google.dagger:dagger:2.7'

3
fardown

Javaバージョン1.7を使用していることを確認してください。また、短剣パイプラインで他の何かが壊れている場合、このエラーも発生します。

1
Horatio

同様の問題がありましたが、理由は異なります。
apkを生成しようとしたときにのみ問題が発生しました。それ以外の場合は、正常に機能していました。
私の場合、問題は、クラスが何らかの理由でtestディレクトリではなくmainディレクトリにあったことでした。それをmainに移動し、動作しました。
誰かに役立つことを願って

1
PhpLou

ファイル-> InvalidateCaches/Restart私のために働いた

1
D1 and 1ly

純粋なJavaライブラリモジュールを使用していましたが、次のようにkotlinプラグインと短剣の依存関係を使用していました。

build.gradle

apply plugin: 'kotlin'
dependencies {
    implementation "com.google.dagger:dagger:2.22.1"
    kapt "com.google.dagger:dagger-compiler:2.22.1"
}

エラーは、kotlin-kaptプラグインを追加できなかったことです。したがって、私のbuild.gradleファイルは次のようになりました。

apply plugin: 'kotlin'
apply plugin: "kotlin-kapt" // make sure you added this line

dependencies {
    implementation "com.google.dagger:dagger:2.22.1"
    kapt "com.google.dagger:dagger-compiler:2.22.1"
}
1

を参照してください。

ВыполнитешагидлясозданияклассаDaggerApplicationComponent

  1. Чистыйпроект
  2. Перестроитьпроект
  3. ИмпортироватьвручнуюOption+ReturnまたはAlter+EnterеслиуваснетфункцииавтоматическогоимпортаналетувAndroidстудии

Готово

1
Hiren Patel

最初に、この行をProject build.gradleファイルのbuildscriptの依存関係に追加します。

 classpath 'com.neenbedankt.gradle.plugins:Android-apt:1.8'

次に、モジュールの上部に次の行を追加します:app build.gradleファイル

apply plugin: 'com.neenbedankt.Android-apt'
0
s-hunter

すべての短剣の依存関係に同じ短剣バージョンを使用します。私のために働いた。

implementation "com.google.dagger:dagger:$daggerVersion"
implementation "com.google.dagger:dagger-Android-support:$daggerVersion"
annotationProcessor "com.google.dagger:dagger-Android-processor:$daggerVersion"
annotationProcessor "com.google.dagger:dagger-compiler:$daggerVersion"


//define version in main build.gradle
ext {
    daggerVersion = '2.11'
}
0

特定のコンポーネントおよびモジュールの注釈をどこでも再確認してください。私の問題は、モジュールで@Namedを使用していましたが、コンストラクターで@Namedを定義していなかったことです。

0
Arpit

このエラーを受け取ったインスタンスでは、報告されたエラーはDaggerMyComponentのエラーが報告されたという点でオフマークでしたが、根本的な原因は、コードの別の場所で、誤ってButterKnifeの@BindViewを使用していたことですプライベートビュータイプのメンバー。これを修正することでエラーがなくなりました。

0
aandotherchars

それは私が直面している非常に有線の問題です!これがダガーに関連する理由がわかりません!

ビューのバインドには ButterKnife を使用しますが、コーディングの方法はいくらか(急いでコピー/貼り付けしてください!)2つの異なるビューを同じid以下のように(両方のビューでfabid

@BindView(R.id.fab)
FloatingActionButton fab;
@BindView(R.id.fab)
Toolbar toolbar;

アプリを実行しようとした後、ビルドタブでこのエラーをスローします

コンパイルに失敗しました。詳細については、コンパイラエラーの出力を参照してください。

そして、コンパイラエラーは

エラー:シンボルクラスDaggerApplicationComponentが見つかりません

私はそれがばかげているように見えることを知っていますが、それは私に起こり、fix idsの後、私の問題は解決しました。

何か助けてほしい。

0
Radesh

プレゼンターの私の場合、データマネージャーなどのオーバーライドされたメソッドに@Injectアノテーションを使用しませんでした。

 @Inject
 public RegisterPresenter(DataManager dataManager, SchedulerProvider 
             schedulerProvider, CompositeDisposable compositeDisposable) {
                super(dataManager, schedulerProvider, compositeDisposable);
}
0

この問題はありましたが、ビルド中に2つの失敗がありました。 1つは欠落しているコンポーネントでしたが、もう1つはButterKnifeで、@ BindViewはビューを見つけることができませんでした。これを修正すると、欠落しているコンポーネントが修正されました。注釈の処理に失敗すると、同様の問題が発生すると思います。

0
Matt Goodwin

アプリケーションを実行しようとすると、ビルドが失敗し、クラスをインポートするオプションが表示されます。これは、daggerがこれらのクラスをコンパイル時ではなく実行時にのみインポートするために発生します。

0
Burhan Shakir