Android requires compiler compliance level 5.0 or 6.0. 出错原因分析、解决方法

    xiaoxiao2021-12-02  18

    开发过程中碰到了一个问题:

     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以上才可用
    转载请注明原文地址: https://ju.6miu.com/read-679683.html

    最新回复(0)