17

我挖出了几年前我正在研究的一个旧的 android 项目,并将其加载到一个新的 eclipse 安装(最新的 ADT 等)中。

该项目全部编译正常(经过一些小的调整),并且应用程序启动正常,但是,当我按下按钮启动主要活动时,我得到以下堆栈跟踪:

FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: com.tmm.android.activities.GameActivity
    at com.tmm.android.activities.StartActivity.onClick(StartActivity.java:53)
    at android.view.View.performClick(View.java:2408)

现在有问题的类(GameActivity)是我在应用程序中的类之一,所以我知道那不是问题 - 但我注意到 logcat 顶部有一个警告:

Unable to resolve superclass of Lcom/tmm/android/activities/GameActivity; (33)
Link of class 'Lcom/tmm/android/activities/GameActivity;' failed

我的类 GameActivity 扩展了另一个类,该类是我包含在项目中的第三方 jar 的一部分(将其包含在“libs”目录中,并将其添加到 eclipse 中的项目构建路径中)。

谁能告诉我可能做错了什么,或者我可能需要考虑的 ADT/etc 中发生的任何变化(当我上次在 Eclipse 中使用它时它工作正常)

干杯

4

3 回答 3

29

我有同样的问题。我有一个自定义 View 类,它调用导入库中的方法。当应用程序尝试创建我的视图时(同时尝试扩展引用该自定义视图的布局),我也收到“无法解析超类”错误。

我解决了我的问题,并尝试确定我认为的最终答案。

(在撰写本文时,我使用的是 Eclipse Android Tools R21)。

如果您使用的是外部 jar

  • 将其复制到项目的“libs”文件夹中。Android 工具应该完成其余的工作。

如果您要使用的库是工作区中的单独项目。

  • 在您的库项目中:进入 Properties->Android 并选中“Is Library”复选框。
  • 在您的应用程序项目中:进入 Properties->Android 并在同一部分添加库项目(单击“添加..”)。不要在这里检查“是图书馆”!

这个问题的一些答案说你需要去 Properties->Java Build Path->Projects 并在那里添加库项目。对于普通的 Java 项目,您会这样做,但 Android 工具似乎不需要或使用它。

最后,您可能需要确保该库包含在您导出的应用程序中

  • 转到 Properties->Java Build Path->Order and Export 并确保检查库。
于 2013-01-30T16:58:23.150 回答
10

好的,最后是一个简单的问题..

将第 3 方库添加到构建路径后,导出选项卡未默认导出 jar(eclipse 正常行为)-因此 jar 未包含在部署中。

解决了这个问题。。

于 2012-09-04T20:23:16.887 回答
0

我遇到了同样的问题,我尝试在 Order and Export 下检查 Android Private Libraries,但它对我不起作用。所以后来我注意到我的 libs 文件夹没有在 Java 构建路径下引用,我只是将它添加到库中,就是这样......

于 2013-06-27T21:06:30.687 回答