eclipse中的classdefnotfound错误(奇怪)

时间:2011-06-09 16:16:44

标签: java android eclipse classnotfoundexception

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

该课程位于谷歌api客户端库版本1.4.1。

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

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

5 个答案:

答案 0 :(得分:2)

如果此类是活动,请确保将其添加到AndroidManifest.xml文件中!

答案 1 :(得分:2)

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

答案 2 :(得分:1)

从我发现的错误来看,通常是由ClassNotFoundException引起的,在我的情况下,引发此异常是因为我实现了在发布Android OS版本时尚未引入的接口。应用正在运行...这显然导致在运行时无法识别该类。

答案 3 :(得分:0)

有时,当您导出项目并使用模糊处理时会发生这种情况。 Proguard将擦除manifest.xml中仅提及的类,而不是直接在代码中使用的类(例如内省类加载)。

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

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

dexdump附带了android sdk,可以用来反编译你的apk中的classes.dex。

的问候,
 斯特凡

答案 4 :(得分:0)

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