2

我的 Android 应用程序在运行时收到 classdefnotfound 错误。除了这一堂课外,一切都运行良好。以前这门课有效。该类实际上在一个外部库中,所有库都是正确的。有没有人在eclipse中遇到过这样的事情?我感觉是环境问题。

该类在 google api 客户端库版本 1.4.1 中。

classdefnotfound: com.google.api.client.xml.XmlNamespaceDictionary;

jar 文件位于 lib 目录和 .classpath 文件中。

4

5 回答 5

2

如果这个类是一个活动,那么确保你将它添加到你的 AndroidManifest.xml 文件中!

于 2011-06-09T16:19:54.377 回答
2

我非常意外地遇到了这个问题,并且无法通过建议的解决方案真正解决它。事实证明,这篇博文非常有帮助。简而言之,我将所有库都放在lib文件夹而不是libs中,并将它们添加到 Eclipse 的构建路径中。但在后一种情况下,Android 会自动添加您的库。将文件夹重命名为libs并删除之前对类路径的手动更改解决了该问题。

于 2012-05-24T19:49:35.637 回答
1

据我所知,这个错误通常是由 ClassNotFoundException 引起的,在我的情况下,这个异常被抛出是因为我实现了在应用程序运行的 android OS 版本发布期间尚未引入的接口...这显然导致该类在运行时无法被识别。

于 2020-07-30T22:58:17.117 回答
0

有时,当您导出项目并使用混淆时会发生这种情况。Proguard 将删除仅在 manifest.xml 中提及且未在您的代码中直接使用的类(例如自省类加载)。

在这种情况下,您应该配置 proguard 以保留您的课程,查看 proguard.cfg 并为您的课程添加一行。

此外,如果这发生在调试模式下而不是导出的应用程序,那么您可以解压缩您的 apk 文件,使用 dexdump 查看您的类是否包含在您的 dex 文件中。

dexdump 带有 android sdk,可用于反编译 apk 中的 classes.dex。

问候,
斯蒂芬

于 2011-06-09T16:22:34.847 回答
0

好的,我已经想通了(经过 8 小时的拉头发!)。谷歌客户端 lib jar 文件位于另一个项目(正在运行的项目)中。我已将它们作为引用库添加到项目中。由于某种原因,它没有在编译时添加。解决方案:将实际的jar文件复制到/lib目录,并通过删除引用的libs来更新eclipse中的构建路径

于 2011-06-10T01:01:08.897 回答