Dx bad class file magic (cafebabe) or version (0033.0000) 导致 NoClassDefFoundError 的问题

在做一个二维码扫描的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

Dx bad class file magic (cafebabe) or version (0033.0000) 导致 NoClassDefFoundError 的问题
连接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

上一篇:PTA(Advanced Level)1037.Magic Coupon


下一篇:Python类Class的简单介绍,继承、静态方法和类方法、magic方法