Android项目中带有外部JAR的java.lang.NoClassDefFoundError

Android项目中带有外部JAR的java.lang.NoClassDefFoundError,android,jar,runtime-error,noclassdeffounderror,Android,Jar,Runtime Error,Noclassdeffounderror,我已经在网上搜索了两天了,我觉得我什么都试过了。 请让我知道任何代码片段是否有助于找到解决方案 我已经创建了一个具有标准登录活动的android应用程序。在doInBackground()方法中,我从另一个外部类调用一个静态方法。由于单击submit按钮后将调用此方法,因此在运行时会发生错误。该类包含在我的文件中,没有编译错误。每当我点击/单击Submit按钮时,就会出现一个java.lang.NoClassDefFoundError,它引用了一个类(在我的外部jar中),该类被使用并正确地包含

我已经在网上搜索了两天了,我觉得我什么都试过了。 请让我知道任何代码片段是否有助于找到解决方案

我已经创建了一个具有标准登录活动的android应用程序。在doInBackground()方法中,我从另一个外部类调用一个静态方法。由于单击submit按钮后将调用此方法,因此在运行时会发生错误。该类包含在我的文件中,没有编译错误。每当我点击/单击Submit按钮时,就会出现一个java.lang.NoClassDefFoundError,它引用了一个类(在我的外部jar中),该类被使用并正确地包含在我在doInBackground()方法中引用的外部文件中

我的所有外部库都在“libs”文件夹中。我尝试手动将它们添加到构建路径,并在“订单和导出”选项卡中选中它们旁边的复选框,而不是选中“Android私有库”条目旁边的复选框。我试着把“gen”目录放在“src”目录之上,这也没有改变任何东西。重新启动eclipse,作为一个整体重新导入项目,在构建路径中摆弄外部库的顺序,修复项目属性,一遍又一遍地清理项目,这些都无济于事。我查过了

尝试了所有的解决方案,但没有一个对我有效。我以前在一个库中遇到过类似的问题,我可以通过更改一些构建路径设置并重新启动Eclipse来解决它。然而,这对我来说已经不起作用了。我希望任何人都有另一个解决方案或想法,我不知道出了什么问题

提前谢谢大家

怡和

编辑:

尽管创建了一个全新的项目,并将以前的文件添加到这个新项目中,但在新项目中我仍然遇到同样的问题。我想我已经找到了这个错误的来源:当我添加外部库时,我仍然拥有从刚刚添加的.jar到其他jar的依赖关系。在添加了这些之后,编译器说我需要java.rmi.Remote类,它位于java的JRE系统库(rt.jar)中。将整个jre库添加到我的项目中使编译器错误消失,但是运行时错误仍然存在。 经过进一步研究,我发现我的外部库可能与android运行时环境不兼容,这意味着jar的.class文件没有android设备上Dalvik virtualmachine所需的等效.dex表示。对于许多JavaJAR来说,尤其是那些设计用于android平台的jar,这些问题不会发生


如果我错了,请纠正我,但这个解释对我来说似乎很有道理。太糟糕了,因为这是当前以编程方式访问数据库的唯一方法

确保您已更新到最新版本的ADT Eclipse插件和SDK工具,并确保在项目属性中选中“Android依赖项”


确保您已更新到最新版本的ADT Eclipse插件和SDK工具,并确保在项目属性中选中“Android依赖项”


谢谢Ken,Android SDK工具有更新,我会试试看。我会让你不断更新。我更新了Android SDK工具,重新启动了eclipse,重建了我的项目。然而,同样的错误还是发生了。为什么您的视图中没有标准的JavaJRE系统库条目?我的被检查了,我没有检查它,对“安卓4.2.2”也做了同样的检查。它仍然不起作用..嗯,我不确定还能是什么。我唯一能建议的另一件事是从头开始一个新的Android项目(使用Android新项目向导),用这个外部库做一个简单的测试,然后用你的旧代码从头开始构建这个新项目。是的,这将是我的下一个方法。知道出了什么问题还是很好的。非常感谢你的帮助!谢谢Ken,Android SDK工具有更新,我会试试看。我会让你不断更新。我更新了Android SDK工具,重新启动了eclipse,重建了我的项目。然而,同样的错误还是发生了。为什么您的视图中没有标准的JavaJRE系统库条目?我的被检查了,我没有检查它,对“安卓4.2.2”也做了同样的检查。它仍然不起作用..嗯,我不确定还能是什么。我唯一能建议的另一件事是从头开始一个新的Android项目(使用Android新项目向导),用这个外部库做一个简单的测试,然后用你的旧代码从头开始构建这个新项目。是的,这将是我的下一个方法。知道出了什么问题还是很好的。非常感谢你的帮助!有一件事经常发生:文件夹被命名为“lib”而不是“libs”…你确定你的文件夹被命名为“libs”吗?是的,绝对正确。我之前已经改变过它了,因为我和另一个外部jar有一个不同的初始活动。我已经解决了这个问题,因为我以前也遇到过同样的问题。可能是@Selvin的重复-我按照Commonware的说法尝试过,但仍然会发生同样的错误。经常发生的一件事是:文件夹名为“lib”而不是“libs”…你确定你的文件夹名为“libs”吗?是的,绝对正确。我之前已经改变过它了,因为我和另一个外部jar有一个不同的初始活动。这是我已经解决的问题,因为我以前也遇到过同样的问题。可能是@Selvin的重复-我按照Commonware的说法尝试过,但仍然出现了相同的错误。