RoboGuice 3.0 NoClassDefFoundError:AnnotationDatabaseImpl

jus*_*ush 5 android roboguice

由于某种原因,RoboBlender不会生成注释数据库.我的build.gradle具有以下依赖项:

dependencies {
    provided 'org.roboguice:roboblender:3.0'
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'org.roboguice:roboguice:3.0'
}
Run Code Online (Sandbox Code Playgroud)

Las*_*sen 0

您的项目结构的其余部分是什么样的?

具体来说,您是否阅读过RoboBlender wiki

默认情况下,更高版本的 Android Studio 将生成属于 -Configuring RoboBlender for a large application using libraries类别的项目。

下面的修复执行以下操作:

  1. 重新排列 build.gradle 中的依赖项
  2. 提供指向项目中 GuiceModule 的指针
  3. 您的项目的基本模块


diff --git a/app/build.gradle b/app/build.gradle
index 1e69cec..8450fff 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -34,9 +34,9 @@ android {
 }

 dependencies {
-    provided 'org.roboguice:roboblender:3.0'
     compile fileTree(dir: 'libs', include: ['*.jar'])
     compile 'org.roboguice:roboguice:3.0'
+    provided 'org.roboguice:roboblender:3.0'
 }

 project.tasks.withType(JavaCompile) { task ->
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 017d11e..dba9e49 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -8,6 +8,7 @@
         android:label="@string/app_name"
         android:theme="@style/AppTheme" >
         <meta-data android:name="roboguice.annotations.packages" android:value="org.jush.roboguice3test"/>
+        <meta-data android:name="roboguice.modules" android:value="org.jush.roboguice3test.GuiceModule"/>
         <activity
             android:name="org.jush.roboguice3test.MainActivity"
             android:label="@string/app_name" >
Run Code Online (Sandbox Code Playgroud)


package org.jush.roboguice3test;

import android.app.Application;

import com.google.inject.AbstractModule;

public class GuiceModule extends AbstractModule {
    private Application application;

    public GuiceModule(Application application) {
        this.application = application;
    }

    @Override
    protected void configure() {
    }
}
Run Code Online (Sandbox Code Playgroud)