jdk高版本编译低版本jar导致的运行错误.md

1,前言:

  • 分析问题:

当问题出现时,通过得到的线索理智,清醒地分析,正确地定位问题原因,比鲁莽冲动的急着着手解决,有时来得更事半功倍;

  • 工具的使用

Eclipse等 IDE的各种配置,页签,按钮,快捷键等等工具的熟练程度,能帮助开发者发现问题,解决问题,提高开发效率,例如常用的console,logcat,problems,debug,Ddms,堆栈列表等等

2,情景:

在依赖于wade-mobile源码包运行app时,发生的错误,记录一下,之前也发生过,但是没有解决,一直以为是jar包重复依赖冲突导致的的问题(其实重复冲突报错是这个:Dultple jar…)
App在编译时没有错误,运行时却报错,所以是个running err,一直以consele红色和Problems页签上的提示 (conversion to dalvik format failed with error 1)为依据来搜索解决bug,都是说包冲突的问题;在老大的提示下,看了console中的详细提示(可能是我的前端思维原因,很多时候我不太喜欢深入参考console里的内容),一行一行的检索,检索熟悉得内容,发现:
com.android.dx.cf.iface.ParseException: bad class file magic (cafebabe) or version
以此搜索,结果迅速定位问题原因:发现是JDK编译版本问题:这其实是jdk版本兼容性问题。我的新工作区间引入的jar包编译环境(是1.8)要高于同事之前编译jar时所用编译版本(比如1.6)。要解决这个问题,就必须保证你android项目的编译jdk版本要高于等于你引入jar包的编译jdk版本,然后重新编译就好了;
有两种解决方案
1、低于等于你android的jdk版本来重新编译你要引入的jar包(不推荐)

如果引入的jar是开源框架,你要去修改jar的编译版本比较麻烦,所以不推荐

2、修改android项目的jdk版本。

可以修改android项目的jdk版本,具体修改方式如下:

Windows–>Preferences–>Java–>Compiler,然后修改默认的编译版本:

  • 参考:

http://www.sbbok.com/discussion/32/android%E7%BC%96%E8%AF%91%E6%97%B6%E6%8A%A5com-android-dx-cf-iface-parseexception-bad-class-file-magic%E5%BC%82%E5%B8%B8

{http://aaronchansunny.github.io/2015/11/18/android-support-max-jdk-version/}(android studio )

你可能感兴趣的:(BUG)