在模拟器/手机中运行应用程序时出现NoClassDefFoundError [更新到上一个问题]

时间:2011-06-30 18:50:53

标签: java android eclipse amazon-web-services

这是我今天早些时候提到的this question的更新。

简要重申问题:我有一个Android应用,需要使用亚马逊的Android Android SDK。我将必要的库(JAR文件)添加到Eclipse构建路径中。但是,当我运行应用程序时,应用程序崩溃并出现NoClassDefFoundError。

经过一番调查后,我已经隔离了导致错误的代码。我制作了一个简单的虚拟Android应用程序,它使用了明显错误的代码。单个活动的源代码是here。并here is the logcat output

我注意到了一些奇怪的事情。如果未正确添加库,则应在第34行失败:

credentials = new BasicAWSCredentials( accessKeyId, secretKey );

但事实并非如此。相反,它在第62行失败,第62行链接到第48行。

第62行:

sdb = new AmazonSimpleDBClient( credentials );

第48行(47的一部分):

list.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, getInstance().listDomains().getDomainNames()));

有趣的是,随SDK提供的示例项目运行良好。以下是SimpleDB的代码,它是源文件之一。我基本上复制并粘贴了一些代码,要求访问亚马逊的SimpleDB,但是我的失败了,而样本却没有。

那么,任何人都有任何想法吗?


事实证明,AWS SDK中的jar文件未正确构建。他们似乎错过了一个不再公开发布的旧Apache库。亚马逊已经更新了下载,并且库不再抛出NoClassDefFoundError。

来源:Forum post on the AWS mobile dev forum

1 个答案:

答案 0 :(得分:1)

在大多数情况下, NoClassDefFoundError 表示类的重复版本在类路径上。我认为你应该检查你的依赖项/库是否有重复的.class文件。请先在jar-s中查看此文件: org.apache.commons.httpclient.params.HttpClientParams

希望它有所帮助!