Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在emulator/phone中运行应用程序时出现NoClassDefFoundError[更新到上一个问题]_Java_Android_Eclipse_Amazon Web Services - Fatal编程技术网

Java 在emulator/phone中运行应用程序时出现NoClassDefFoundError[更新到上一个问题]

Java 在emulator/phone中运行应用程序时出现NoClassDefFoundError[更新到上一个问题],java,android,eclipse,amazon-web-services,Java,Android,Eclipse,Amazon Web Services,这是我今天早些时候询问的更新 问题的简单重复:我有一个Android应用程序,需要使用亚马逊的AWS Android SDK。我将必要的库(JAR文件)添加到Eclipse构建路径中。但是,当我运行该应用程序时,该应用程序会因NoClassDefFoundError崩溃 经过一点调查,我已经分离出导致错误的代码。我制作了一个简单的虚拟Android应用程序,它使用了明显有缺陷的代码。单个活动的源代码为。和 我注意到了一些奇怪的事情。如果未正确添加库,则在第34行它将失败: credentials

这是我今天早些时候询问的更新

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

经过一点调查,我已经分离出导致错误的代码。我制作了一个简单的虚拟Android应用程序,它使用了明显有缺陷的代码。单个活动的源代码为。和

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

credentials = new BasicAWSCredentials( accessKeyId, secretKey );
但事实并非如此。相反,它在第62行失败,该行链接到第48行

第62行:

sdb = new AmazonSimpleDBClient( credentials );
第48行(第47部分):

list.setAdapter(新的ArrayAdapter(这个,R.layout.list_项,getInstance().listDomains().getDomainNames());
有趣的是,SDK提供的示例项目工作得非常完美。这是的代码,它是源文件之一。我基本上复制并粘贴了一些调用Amazon的SimpleDB的代码,但是我的代码失败了,示例也没有

有人有什么想法吗


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


来源:

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


希望有帮助

因此,我认为问题在于其他方面……类似的方面:AWS库使用了不再包含在Android发行版中的Apache库。至少我是这么想的。
list.setAdapter(new ArrayAdapter<String>(this, R.layout.list_item, getInstance().listDomains().getDomainNames()));