开发过程中碰到了一个问题:
Android requires compiler compliance level 5.0 or 6.0. Found '1.7' instead. Please use Android Tools > Fix Project Properties.
网上找了找了很多文章,但是都没有从根本上了解问题产生的原因,就像我上一篇文章说的"程序代码写的有问题,导致内存溢出",问题源头是代码写的有问题,而不是内存不够
——————————
问题产生的原因是我在使用ArrayList<String> list = new ArrayList<>; 这行代码时,程序提示红线:
实例化时自动泛型指定是jdk1.7中的特性
常见该错误的出现场景还有switch中使用字符串:
同样是由于switch使用字符串作为入口值是jdk1.7中的新特性
——————————
我的程序默认的jdk编译版本使用的是1.6:
所以需要换成1.7才能使用新特性
——————————
但是jdk换成1.7后,出现了下面的问题:
直译过来的意思是:Android需要编译器遵从5.0或6.0水平。发现“1.7”。请使用Android Tools>Fix Project Properties功能。
如果你按它说的做了(网上很多方法也是让你这样做)
你会发现eclipse自动把你的jdk编译版本回退到了1.6,确实“解决了问题”
——————————
但我们必须要用jdk1.7
解决方法:
android是在基于java的基础上拓展来的一门语言,其底层实现很多地方都依赖了java库,也就是说sdk很多地方依赖了jdk,所以我想会不会是sdk版本版本过低,导致低版本的sdk用不了jdk。再回头看错误提示中出现的"5.0"、"6.0"字眼,可能就是这个原因
——————————
我的sdk版本确实没有5.0和6.0
——————————
将sdk切换为6.0:
该目录我的本地上已经下好的6.0sdk
但是选用该sdk后,提示了一个错误 原因是当前eclipse使用的adnroid开发用adt插件版本为22.3.0版本,而我的6.0sdk要求adt插件版本为23.0.0以上才可用
——————————
切换新版本adt插件:
安装新版本adt插件中出现一个错误:
意思是说你将要安装的adt插件中,与eclipse中已安装的一些adt插件冲突了
分析发现是新版本adt插件与旧版本adt插件的冲突
——————————
解决方法:
先卸载与旧版本adt插件相关的所有工具后,再安装新版本adt
上面的就是造成冲突的已安装工具
卸载之再重新安装新版本adt即可
——————————
再重新安装adt成功了。
再进入eclipse弹出以下提示
意思是你用的adt版本很新,但你的sdk版本很旧(你当前的sdk是用来和22.3的adt配合做开发的),建议你更换高版本sdk
——————————
再更换6.0版本sdk成功了。
此时可以正常使用jdk1.7了,不会再出现android requires compiler compliance level 5.0 or 6.0.问题
根本原因是你当前eclipse中使用的sdk版本和jdk版本不匹配,要么降低jdk版本要么提升sdk版本
——————————
个人本来只是想随便写一下笔记,记录这次的问题和解决的方法
不过想到以后可能自己遗忘了也能在这里复习,所以就把步骤比较完善的图文并茂了,利人利己
原因是当前eclipse使用的adnroid开发用adt插件版本为22.3.0版本,而我的6.0sdk要求adt插件版本为23.0.0以上才可用