2

我对 Android 开发有点陌生,所以请多多包涵。

我已经查看了这个MapView:找不到从方法 B 引用的类 A和这个找不到方法 XXX,从方法 YYY 引用

但他们无助于解决我的问题。

尝试运行我的应用程序时,我收到问题标题中报告的错误。我的应用程序需要一个我从 Github 提取的 java 项目,该项目本身需要一些 jar 文件才能自行编译。我编译了 java 项目,Eclipse 使我的 android 项目看起来已经编译,但它在我的手机上不起作用。

我尝试了以下方法,都导致相同的结果:

  • 直接使用java构建路径引用了java库
  • 构建了一个android项目库,它直接使用java构建路径引用java库,然后将android项目库添加​​到我的项目android库路径中
  • 构建了一个引用我从 java 库构建的 jar 的 android 项目库,然后将 android 项目库添加​​到我的项目 android 库路径
  • 从java库构建了一个jar,然后将jar添加到我的android项目的构建路径中

最终结果总是一样的,我的程序编译但是当我尝试运行它时崩溃说“找不到来自 GitHub 项目的类”从“我的主要活动方法”中引用

有人可以扔骨头吗?

日志猫

    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”下的目录中,这导致了一个问题。

4

3 回答 3

3

请参阅此 SO 帖子以正确将现有项目导入 Eclipse ...

最有用的帖子似乎是:

  1. File->Import->General->Existing Projects into Workspace,下一步
  2. 选择根目录:/path/to/project
  3. 项目->全选
  4. 取消选中“将项目复制到工作区”和“将项目添加到工作集”
  5. 结束

要将其添加为另一个项目的库,请参阅Android 开发网站中的此链接

  1. 在 Package Explorer 中,右键单击库项目并选择 Properties。
  2. 在“属性”窗口中,选择左侧的“Android”属性组并找到右侧的库属性。
  3. 选择“是库”复选框并单击应用。
于 2012-12-14T16:29:21.640 回答
3

我遇到过同样的问题。终于找到了解决办法。

您导入的 java 项目应该在构建您的 android 项目时构建。

Java build path -> Order and Export,检查java项目,然后重建你的android项目。

于 2013-01-07T07:15:25.450 回答
0

将 OSMDroid 导入我的应用程序后,我遇到了同样的问题。我检查了 LogCat 输出,这表明 Dex 加载程序在 OSMDroid 中找不到特定的类(GeoPoint)。我意识到bin文件夹中没有类文件,即它没有被编译。原因是我的导入已将源代码放入名为“org”的库中,而不是放入“src”中。将其移至“src”并重建 OSMDroid 在“bin”中生成了正确的类文件,现在一切正常。

于 2014-01-22T15:25:47.473 回答