首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RoboGuice 3.0 NoClassDefFoundError: AnnotationDatabaseImpl

RoboGuice 3.0 NoClassDefFoundError: AnnotationDatabaseImpl
EN

Stack Overflow用户
提问于 2014-10-31 03:20:47
回答 5查看 3.2K关注 0票数 6

由于某些原因,RoboBlender不会生成注释数据库。我的build.gradle有以下依赖关系:

代码语言:javascript
复制
dependencies {
    provided 'org.roboguice:roboblender:3.0'
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'org.roboguice:roboguice:3.0'
}
EN

回答 5

Stack Overflow用户

发布于 2015-05-14 02:18:47

这不是最终的解决方案,但它可以帮助您。我不知道为什么,但是RoboGuice 3.0和3.0.1抛出了这个例外。您需要做的是禁用MainActivity中数据库的注释,如下所示:

代码语言:javascript
复制
static {
    RoboGuice.setUseAnnotationDatabases(false);
}

我希望这对你有所帮助

票数 4
EN

Stack Overflow用户

发布于 2014-10-31 16:13:40

好的,看起来因为我在主类MainActivity中没有任何注入,所以它没有触发内部AsyncTask的注释处理。因此,没有创建任何注释数据库。

此外,似乎不支持匿名内部类中的注入。所以AsyncTask需要是一个合适的类(它仍然可以在MainActivity中)。

我还没有想出如何告诉RoboGuice检查内部类,即使外部类没有注入。

票数 1
EN

Stack Overflow用户

发布于 2014-10-31 04:28:02

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

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

默认情况下,更高版本的Android Studio将生成一个落入Configuring RoboBlender for a large application using libraries-category的项目。

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

在您的项目的project

  • Rudimentary模块中,
  1. 重新排列指向GuiceModule的指针中的依赖项

代码语言:javascript
复制
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" >
代码语言:javascript
复制
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() {
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26661571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档