jar2dex遇到的问题总结bad class file magic (cafebabe) or version (0034.0000)

这两天在研究应用的热修复,热修复的原理比较复杂昨天看了一天也没弄明白,不过大致流程弄明白了,有想研究热修复的可以参考鸿神的csdn:

http://blog.csdn.net/lmj623565791/article/details/49883661   内容比较长,大家要有耐心哦。

其中有一个class->jar->dex的过程,

将class文件弄成jar(根据自己的需求将class文件放到自己的指定目录下)生成jar的指令如下:   path.jar是你要生成的jar名称 后面是要生成jar的文件目录


在class文件生成jar成功后,下面就需要进行下一步了jar->dex了,在这我们还需要dx工具,在sdk的build-tools里面有dx工具,但是不知道执行完命令没有生成path_dex.jar

所以推荐大家自己下载一个dx工具:

这是下载链接:http://download.csdn.net/detail/qxs965266509/9375139

用法也有详细说明。

就在jar包换成dex的jar包的时候,我遇到了大坑:

指令如下: path_dex.jar是转换后的jar  path.jar是原始的jar

dx --dex --output=path_dex.jar path.jar

错误提示如下:

虽然path_dex.jar生成了,但是我通过反编译之后,发现里面少了很多东西。出现这个问题的原因好像是jdk版本和android studio编译之后生成class文件的jdk版本不一致,至于为什么不一致,我也想说,这是什么鬼。不过还是有解决办法的,我们可以将我们的class文件强制转换成1.6版本,然后再走class->jar->dex流程就可以了。

javac -source 1.6 -target 1.6  xx.java(xx代表了你的java文件名称)

当然也可以同时组合其它的命令:-d是生成包名的指令

我们可以忽略上面的警告,因为对我们没有影响。现在我们再进jar->dex转换的时候,效果如下:


ok~




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值