在作动态加载时有一步是要将jar 转化为dex,用到了dx工具。以前项目在Eclipse上生成jar包转化为dx很正常,可是最近把项目迁移到Android Studio上生成的jar在转化dx报了bad class file magic (cafebabe) or version (0033.0000)错误java
在网上搜了一圈,获得的缘由是生成jar包的jdk和进行dx化的jdk版本不一样,也给出了解决办法,将java文件版本下降:工具
javac -source 1.6 -target 1.6 xx.Java测试
可是对我不适用,由于我这有上百个java文件须要下降版本,并且Android Studio上jdk版本是最新的1.8.所以推测从dx使用的jdk入手会有解决方法。个人dx工具是从网上下载的,之前只知道怎么用,不知道里面都有哪些东西,zip包里只包含了dx.bat,dex.jar。dx.bat中有一句:ui
set jarfile=dx.jar.net
并且后面的命令就是调用dx.jar,因为电脑上只安装了jdk1.8,经过环境变量获取到java版本也必是这个,惟一的可能就是dx.jar太旧,在sdk目录下的build-tools里面找到最新版本的dx替换,测试一下,正常!ip
并且以后在Stack Overflow上也找到了一样的解决办法:get