2013-10-24 1 views
14

私はEclipseでビルドするために、Androidの依存性注入にDaggerを使用しています。私は一例としてandroid-activity-graphsをクローンしました。私はhttps://github.com/square/dagger/issues/126
からstaxgrに応じて自分の環境を設定したeclipseを使用して構築されたダガーの例が失敗しました。「このモジュールでコード生成が実行されたことを確認してください。

これらは私のLIBSは以下のとおりです。短剣-1.1.0.jar短剣コンパイラ-1.1.0.jar、およびのjavax

そして最後に.inject.jar、私は、Eclipseがパッケージキーワードによって関連ファイルを検出するようにsrc/main/java(だけではなくsrc/)を指すようにEclipseのソースフォルダを変更しました。

プロジェクトがビルドしますが、それはこの例外で実行だとき、すぐに失敗します。

Caused by: java.lang.IllegalStateException: 
    Module adapter for class 
    com.example.dagger.activitygraphs.AndroidModule could not be loaded. 
    Please ensure that code generation was run for this module. 

at dagger.internal.FailoverLoader.getModuleAdapter(FailoverLoader.java:41) 
at dagger.internal.Modules.getAllModuleAdapters(Modules.java:43) 
at dagger.ObjectGraph$DaggerObjectGraph.makeGraph(ObjectGraph.java:167) 
at dagger.ObjectGraph$DaggerObjectGraph.access$000(ObjectGraph.java:134) 
at dagger.ObjectGraph.create(ObjectGraph.java:126) 
at com.example.dagger.activitygraphs.DemoApplication.onCreate(DemoApplication.java:29) 
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1000) 
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4391) 

私はダガー例は日食を通じて仕事を得るにはどうすればよいですか?

答えて

22

問題は私がjavawriterライブラリを紛失していることです。また、javawriterのバージョン2.2.1を使用しなければならず、最新のものは2.3.0ではありません(これはおそらく変更されますが、2013年11月27日にこれを書いている時点で真実です)。提供されたリンクから正しい場所に移動する必要があります。これを3回ダブルチェックして、合計6回。このメッセージが表示されるその他の理由のリストも記載します。

まず、これらのチェックボックスがすべてオンになっていることを確認してください。

プロジェクト - >プロパティ - > Javaコンパイラ - >プロジェクト固有の設定を有効にし

プロジェクト - >プロパティ - > Javaコンパイラ - >注釈処理 - >プロジェクト固有の設定を有効にし

プロジェクト - >プロパティ - > Javaコンパイラ - >注釈処理 - >ファクトリパス - >プロジェクト固有の設定を有効にします。

同じ画面で、[jarsを追加]をクリックし、javawriter-2.2.1.jar、dagger-1.1.0.jar、dagger-compiler-1.1.0.jar、およびjavax.inject.jarを追加します。このリストは、合計4つのジャーのためのものでもあります。

これらの4つのjarファイルは、プロジェクトのメインパス上にある 'libs'という名前のフォルダにある必要があります。

ライブラリを使用していて、それらのライブラリでDI用Daggerを使用する場合は、これらのプロジェクトでも上記の手順を実行する必要があります。

+0

あなたのソリューションを投稿していただきありがとうございます。私は、Eclipse(Kepler)にJavaコンパイラ - >ファクトリパスがないことに気付きました。代わりにJavaコンパイラ - >注釈処理 - >ファクトリパスがあります。あなたはケプラーを使っていますか?もしそうなら、Annotation Processingの設定を変更する必要がありましたか?私はあなたの指示に従いましたが、あなたが得ていたのと同じ例外があります。 –

+0

ちょっとジュリアン、私は説明を更新しました。申し訳ありませんが、私は注釈処理部分を忘れました。 「プロジェクト固有の設定を有効にする」チェックボックスをオンにし、4つのライブラリをプロジェクトのホームディレクトリの「libs」フォルダに追加していることを確認できますか?また、これらのライブラリは「ファクトリパス」画面のリストに追加されていますか? – sudocoder

+0

ありがとうございます。変更を加えて例外を取り除きました。しかし今、私は別のものを手に入れます。私は[別のSOの投稿を作成しました](http://stackoverflow.com/questions/20253373/dagger-setup-in-eclipse)。しかし、ここに例外メッセージがあります:内部コンパイラエラー:java.lang.NoSuchMethodError:com.squareup.javawriter.JavaWriter.beginType(Ljava/lang/String; Ljava/lang/String; ILjava/lang/String; [Ljava/lang/String;)Lam/squareup/javawriter/JavaWriter; dagger.internal.codegen.InjectAdapterProcessor.writeInjectAdapter(InjectAdapterProcessor.java:265)で " –

関連する問題