java - Scala+Android+Roboguice : ClassNotFoundException in loader

标签 java android scala guice roboguice

我从 NotesList 演示开始评估 Android 上的 Scala。我能够毫无问题地将 NotesLiveFolder.java 文件替换为其 Scala 等效文件。

接下来,我介绍了 Roboguice,创建了一个简单的 NotesListApplication.java 来设置 Guice 模块,并成功地将资源注入(inject)到 NoteEditor.java Activity 中。

最后,当我尝试将 NotesListApplication.java 替换为其 Scala 等效项时,在应用程序完成启动之前出现以下运行时错误:

java.lang.ClassNotFoundException:加载程序 dalvik.system.PathClassLoader 中的 com.example.android.notepad.NotesListApplication[/data/app/com.example.android.notepad-1.apk]

我创建了一个Google Code project包含完整的 Eclipse 项目和源代码。原始功能 NotesListApplication.java 是:

package com.example.android.notepad;
import java.util.List;
import roboguice.application.RoboApplication;
import com.google.inject.Module;

public class NotesListApplication extends RoboApplication {
    private Module module = new BindEverything();
    public void setModule(Module module) {
        this.module = module;
    }

    @Override
    protected void addApplicationModules(List<Module> modules) {
        modules.add(module);
    }
}

导致错误的 Scala 等效项是:

package com.example.android.notepad
import roboguice.application.RoboApplication

class NotesListApplication extends RoboApplication {
   val module : Module = new BindEverything()
    override protected def addApplicationModules(modules:java.util.List[Module] ) {
        modules.add(module)
    }
}

我正在使用 ScalaIDE 插件在 Eclipse 中进行构建。我没有运行任何摇树机/混淆器/等。

反汇编显示了预期的 Scala 类:

类描述符:'Lcom/example/android/notepad/NotesLiveFolder;'

...

类描述符:'Lcom/example/android/notepad/NotesListApplication;'

有什么想法可能会导致这种情况吗?

最佳答案

升级到 RoboGuice 2.0-SNAPSHOT,然后您就不必使用 RoboApplication,它会自动绑定(bind)。有关如何绑定(bind)的更多信息,请查看 Mike Burton 在 AnDevCon 2 上关于 RoboGuice 的演示文稿中的幻灯片,并查看 2.0 部分 on the wiki .

就像我在邮件列表上发布的那样,也许可以使用 dedexer 检查 apk,看看该类是否确实被删除,例如由 Proguard 或重命名,以便下一步无法找到它。

关于java - Scala+Android+Roboguice : ClassNotFoundException in loader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8084614/

相关文章:

java - getAsync ("key").get(timeout, sec) 不等待,返回 null

java - 在for循环java中的下一次迭代之前等待()

java - 在页面加载时运行 JNLP

java - 通知栏-点击时,如何打开指定位置的文件资源管理器

适用于大屏幕的 android 可绘制文件夹

swing - Scala MouseEvent - 如何知道按下了哪个按钮?

用于创建图形的 Java 库

android - ListView 中的 ToggleButton,值在滚动时自动更改

java - 我无法从 AsyncTask 获得结果?

scala - 为什么导入类型类实例不再需要 importcats.implicits._ ?