在做一个二维码扫描的app , 在项目中需要添加so 文件,以及配套的 *.jar 文档 . 由于项目是远程合作共同开发的 , 项目整体进展很好,等扫码功能解决之后, 他那边同步code编译死活不行, 领导急着要看初版app 的应用进展,这哥们儿,急爆了, 于是我们下午通过远端桌面,找到了以下错误.
使用eclipse ant 打包dex时出现,
执行 第四步 将class文件打包生成classes.dex文件: 命令的时候出现错误
rouble processing:
bad class file magic (cafebabe) or version (0033.0000)
...while parsing com...class
...while processing com...class
21 warnings
no classfiles specified
连接logcat 运行报NoClassDefFoundError 错误. 查看libs 包该加的包一个不少,clean 了几次,仍然不行,巨晕.
网上搜索之后发现了一些解决办法.
Google 了一番, 大致显示的原因:
是引用的Jar包在使用javase 编译时,使用的Java SE 1.7 版本,而引入之后的开发环境Java SE1.6 比较低, Android SDK 版本 所支持的Java SE 5 , 6 不支持1.7 从而导致打包进入apk 文档, 会提示 NoClassDefFoundError , 类找不到错误。
原因找到了, 解决办法也就出来了,
解决办法一(推荐):
查看目前所使用的Android sdk 版本 ,或者查找所引用的java jar 所提示使用的版本, 升级目前所使用的版本, 最好再升级一下java SE 版本 记得在Properties 中选择 java Compiler 之后 配置环境变量, 再项目中选择 Fix properties 。再试一下。
解决办法二:
找到所使用jar 的源码, 如果不麻烦的话,自己使用目前的java se 重新编译class 文档,毕竟目前的java SE与Android SDK版本是匹配的。
总结:
平时不注意这些细节,一般就是安装Java SE之后,Android SDK 也是有提示更新就直接更新。
虽然不常见,但是既然出现了,就记一笔。
查资料遇到的:
http://www.informit.com/articles/article.aspx?p=1966023
http://*.com/questions/24662801/bad-class-file-magic-or-version
paypal/PayPal-Android-SDK#147