为了在我的Android应用程序中添加一项功能,我下载了一些第三方库的开源代码。这是为了进行定制。
我正在使用Eclipse Juno。
我用源代码创建了一个项目,进行了自定义,构建了一个JAR。而且,我在我的项目中使用JAR库。我的应用程序中的代码在特定屏幕上调用库的相应功能。
应用程序编译正常:)
但是,当我运行我的应用程序并导航到我正在使用库类的屏幕时,我遇到了库类的ClassNotFoundException
。
我进一步诊断了它,并观察到,Dalvik VM将所有java类文件转换为DEX。
所有第三方库都放在bin下的dexedLib目录中,其中通常的第三方JAR包括META-INF目录和classes.dex文件。但是,我添加的JAR只包括META-INF目录和NOT classes.dex。因此也是例外。
我没有观察到Dalvik VM报告转换失败事件的任何日志。
我多次清理项目,将项目加载/重新加载到Eclipse中,但没有运气。
还提到了下面的帖子,它讨论了同样的问题,但是他从Eclipse中清除项目并重新加载它再次工作。 android dexed lib is empty
任何帮助都将不胜感激。
答案 0 :(得分:1)
因为您使用Eclipse可能问题与创建构建的方式有关:
转到: 项目属性| Java构建路径|订单和出口
再次检查你的jar是否在列表中(可能已经存在)。 如果是,请选中它旁边的复选框,以便在创建apk时导出jar。
...享受 PS。我建议你转移到Android Studio或IntelliJ(Android studio father)。 ADT for Eclipse已弃用,不再维护..
答案 1 :(得分:0)
在将XZing包含到我的应用程序中时,我遇到了同样的问题。对于3.2.1版,eclipse不会生成classes.dex,但是对于较早的2.3.0版会生成。 我相信这是因为较新的版本使用Java 1.8语法,而较早的android SDK不支持该语法。