在模拟器/手机中运行应用程序时出现NoClassDefFoundError

时间:2011-06-29 20:27:38

标签: java android eclipse

我正在使用Eclipse来管理我的Android项目,该项目使用亚马逊的Android Android库。我已将库jar文件添加到./libs文件夹中,我将库添加到我的Java构建路径(项目属性 - > Java构建路径 - >库 - >添加JARS ...)。我的应用程序编译正确,但是当我在模拟器或手机上运行它时,我得到一个NoClassDefFoundError。我知道在正确编译应用程序时会抛出此错误,但导出的apk文件中的库最终会丢失。

我错过了一步吗?

编辑:

这是堆栈跟踪,直到我的应用程序引用它。

java.lang.NoClassDefFoundError: org.apache.commons.httpclient.params.HttpClientParams
   at com.amazonaws.http.HttpClient.configureHttpClient(Unknown Source)
   at com.amazonaws.http.HttpClient.<init>(Unknown Source)
   at com.amazonaws.AmazonWebServiceClient.<init>(Unknown Source)
   at com.amazonaws.services.simpledb.AmazonSimpleDBClient.<init>(Unknown Source)
   at com.amazonaws.services.simpledb.AmazonSimpleDBClient.<init>(Unknown Source)
   at lee.medical.icu.dataentry.MainMenuActivity.connectToDb(MainMenuActivity.java:121)

3 个答案:

答案 0 :(得分:1)

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

来源:Forum post on AWS mobile dev forums

答案 1 :(得分:0)

您是否在包视图中看到“Referenced libraries”中的库?如果没有,请在项目导航器中选择文件,右键单击它们“构建路径” - &gt; “添加到buildpath”

答案 2 :(得分:0)

我遇到了同样的问题,我在下面的帖子中找到了解决方案。 简而言之,您可能希望将外部jar文件放在libs目录中(不在lib中) 然后通过右键单击项目将其作为外部jar文件包含,然后

properties >> java build path >> add external jars >> libs/yourLibrary.jar

完整的解释是here