【发布时间】:2012-12-14 16:24:25
【问题描述】:
我对 Android 开发有点陌生,所以请多多包涵。
我已经查看过这个MapView: Could not find class A referenced from method B 和这个Could not find method XXX, referenced from method YYY
但它们无助于解决我的问题。
我在尝试运行我的应用程序时收到问题标题中报告的错误。我的应用程序需要一个我从 Github 提取的 java 项目,该项目本身需要一些 jar 文件才能自行编译。我编译了 java 项目,Eclipse 使我的 android 项目看起来已经编译,但它在我的手机上不起作用。
我尝试了以下方法,结果都一样:
- 直接使用java构建路径引用了java库
- 构建了一个android项目库,它直接使用java构建路径引用java库,然后将android项目库添加到我的项目android库路径中
- 构建了一个引用我从 java 库构建的 jar 的 android 项目库,然后将 android 项目库添加到我的项目 android 库路径中
- 从 java 库构建一个 jar,然后将该 jar 添加到我的 android 项目的构建路径中
最终结果总是一样的,我的程序可以编译,但是当我尝试运行它时崩溃说“找不到类”来自 GitHub 项目的类“引用自“我的主要活动方法”
有人可以扔骨头吗?
Logcat
12-14 11:08:49.792: I/Process(5538): Sending signal. PID: 5538 SIG: 9
12-14 11:09:56.722: D/szipinf(5626): Initializing inflate state
12-14 11:09:56.732: E/dalvikvm(5626): Could not find class 'gmusic.api.impl.GoogleSkyJamAPI', referenced from method com.example.gpmx.MainActivity.runGoogleAPI
12-14 11:09:56.732: W/dalvikvm(5626): VFY: unable to resolve new-instance 445 (Lgmusic/api/impl/GoogleSkyJamAPI;) in Lcom/example/gpmx/MainActivity;
12-14 11:09:56.732: D/dalvikvm(5626): VFY: replacing opcode 0x22 at 0x0000
12-14 11:09:56.732: D/dalvikvm(5626): VFY: dead code 0x0002-0036 in Lcom/example/gpmx/MainActivity;.runGoogleAPI (Ljava/lang/String;Ljava/lang/String;)V
12-14 11:09:56.812: D/AndroidRuntime(5626): Shutting down VM
12-14 11:09:56.812: W/dalvikvm(5626): threadid=1: thread exiting with uncaught exception (group=0x40018560)
12-14 11:09:56.812: E/AndroidRuntime(5626): FATAL EXCEPTION: main
12-14 11:09:56.812: E/AndroidRuntime(5626): java.lang.NoClassDefFoundError: gmusic.api.impl.GoogleSkyJamAPI
12-14 11:09:56.812: E/AndroidRuntime(5626): at com.example.gpmx.MainActivity.runGoogleAPI(MainActivity.java:63)
12-14 11:09:56.812: E/AndroidRuntime(5626): at com.example.gpmx.MainActivity.onResume(MainActivity.java:36)
12-14 11:09:56.812: E/AndroidRuntime(5626): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1150)
12-14 11:09:56.812: E/AndroidRuntime(5626): at android.app.Activity.performResume(Activity.java:3832)
12-14 11:09:56.812: E/AndroidRuntime(5626): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2231)
12-14 11:09:56.812: E/AndroidRuntime(5626): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2256)
12-14 11:09:56.812: E/AndroidRuntime(5626): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1789)
12-14 11:09:56.812: E/AndroidRuntime(5626): at android.app.ActivityThread.access$1500(ActivityThread.java:123)
12-14 11:09:56.812: E/AndroidRuntime(5626): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939)
12-14 11:09:56.812: E/AndroidRuntime(5626): at android.os.Handler.dispatchMessage(Handler.java:99)
12-14 11:09:56.812: E/AndroidRuntime(5626): at android.os.Looper.loop(Looper.java:130)
12-14 11:09:56.812: E/AndroidRuntime(5626): at android.app.ActivityThread.main(ActivityThread.java:3835)
12-14 11:09:56.812: E/AndroidRuntime(5626): at java.lang.reflect.Method.invokeNative(Native Method)
12-14 11:09:56.812: E/AndroidRuntime(5626): at java.lang.reflect.Method.invoke(Method.java:507)
12-14 11:09:56.812: E/AndroidRuntime(5626): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
12-14 11:09:56.812: E/AndroidRuntime(5626): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:622)
12-14 11:09:56.812: E/AndroidRuntime(5626): at dalvik.system.NativeStart.main(Native Method)
再提供一条信息,如果有帮助的话。我正在使用的 java 项目取决于各种 apache 和 google jar,它们位于 java 项目“lib”(而不是“libs”)文件夹中。这是创建 jar 时的问题吗?
最终更新: 事实证明,有一个教训。至少在我的配置下,我在 android 库中需要的所有 jar 都必须位于同一目录级别,即在“libs”下。我有几个必需的 jar,比如 apaches common.io jar 在它自己的“libs”下的目录中,这导致了一个问题。
【问题讨论】:
-
请发布整个 LogCat 堆栈以便我们提供帮助。