服务启动时的NoClassDefFoundError

时间:2014-01-10 20:30:51

标签: google-glass google-gdk

启动我的玻璃应用程序时出现以下错误:

FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: com.example.glass.speeddisplay.SpeedDisplayMenuActivity
at com.example.glass.speeddisplay.service.SpeedService.onStartCommand(SpeedService.java:135)
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:2359)
at android.app.ActivityThread.access$1900(ActivityThread.java:123)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)

SpeedService.java的第135行:

Intent menuIntent = new Intent(this, SpeedDisplayMenuActivity.class);

此类是我的源文件夹的一部分,该文件夹被检查以在项目构建设置中导出。

如果我在我的bin文件夹中解压缩.apk,并且dexdump classes.dex文件,我确实看到了这个类:

Wesleys-MacBook-Pro:$ ~/apps/adt/sdk/build-tools/18.1.1/dexdump classes.dex | grep "Class desc" | grep SpeedDisplayMenu
    Class descriptor  : 'Lcom/example/glass/speeddisplay/SpeedDisplayMenuActivity$1;'
    Class descriptor  : 'Lcom/example/glass/speeddisplay/SpeedDisplayMenuActivity;'

为什么我会在应用启动时收到此异常?

1 个答案:

答案 0 :(得分:1)

NoClassDefFoundError与ClassNotFoundExecption有点不同:它表示主类引用的类不能初始化静态块,找不到其他类,...

问题出在SpeedDisplayMenuActivity

  

“如果Java虚拟机或ClassLoader实例尝试,则抛出该异常   加载类的定义(作为普通方法调用的一部分或   作为使用新表达式创建新实例的一部分)和否   可以找到类的定义。搜索过的课程   编译当前正在执行的类时存在定义,   但无法再找到定义。“