7

可能重复:
NoClassDefFoundError - Eclipse 和 Android

我看到这个问题在许多不同的情况下被问了很多。也许我们可以设置一些策略来定位和修复它?我自己很菜,所以我只能贡献恐怖故事和问题,对不起......

当一个类在编译时可见但在运行时不可见时,似乎会抛出这种情况......这怎么会发生?

就我而言,我正在为 Android 平台开发一个在 Eclipse 中使用 Google API 的应用程序。我已将项目属性/Java 构建路径/库配置为包含 gdata .jar,一切都很好。当我在模拟器中执行时,我强制关闭,logcat 在一个简单的 new ContactsService("myApp"); 上显示 NoClassDefFoundError;我还尝试了一个新的 CalendarService("myApp") 具有相同的结果。

是否可以或需要在编译时静态绑定以避免该问题?

无论如何,附加库的动态绑定如何在移动环境中工作?要么它必须绑定到我的 .apk 中,要么我需要“安装”它?……嗯。

建议非常感谢。

4

4 回答 4

9

当一个类在编译时可见但在运行时不可见时,似乎会抛出这种情况......这怎么会发生?

构建类路径可能包含未打包到 APK 中的 JAR。

是否可以或需要在编译时静态绑定以避免该问题?

这是可能的、可取的和必要的。

在 Eclipse 之外,您只需将所需的 JAR 放入libs/项目中,使用 Ant 进行编译,就完成了。

在 Eclipse 内部,我让学生成功使用的一种模式是将您需要的 JAR 放入libs/项目中,将它们作为 JAR 添加到构建路径(注意:不是外部 JAR),然后将它们打包为 APK 的一部分. 但请注意,我个人并不使用 Eclipse,因此我对它的体验有限。

于 2010-03-16T17:29:19.357 回答
2

对于那些有问题的人,我的应用程序也有同样的错误。我要解决的问题是创建一个新项目并将我的资源和源文件夹以及我的清单文件复制到新项目中(我提前删除了新项目中创建的那些),瞧。

于 2012-02-17T01:31:22.903 回答
1

当我得到这个时,问题实际上在队列中更深;Dalvik 转换器未能转换一些引用的库,但 Eclipse 仍然允许我启动该项目。

检查 Android SDK 控制台以查看是否报告了任何错误。

于 2011-03-29T09:37:25.963 回答
1

就我而言,我使用的是在 2 个应用程序之间共享的我自己的库 (MyLib)。当我向库中添加一个新类时,应用程序 A 已关闭。

当我打开 App A 来处理它时,Eclipse 识别出这个新类,并且我能够引用它。但是在运行时我得到了错误。

事实证明,App A 中导入的库文件夹(命名为 MyLib_src)并未反映对我的库项目(MyLib)所做的更改。

  • 为了解决这个问题,我刷新了 App A,反映了更改,Android 可以正确构建我的项目。

我没有发现对这个版本的问题的引用,所以我想我会把它添加到这个列表中。

于 2011-09-28T11:33:08.720 回答