compileSdkVersion 'android-24' requires JDK 1.8 or later to compile

来源:互联网 发布:淘宝海关拍卖网 编辑:程序博客网 时间:2024/06/06 04:57

http://www.jianshu.com/p/1cc1a20c556b

http://www.jianshu.com/p/1cc1a20c556b


compileSdkVersion 'android-24' requires JDK 1.8 or later to compile

http://www.jianshu.com/p/1cc1a20c556b
http://www.jianshu.com/p/1cc1a20c556b
http://www.jianshu.com/p/1cc1a20c556b

一、 背景叨叨叨

今天,好久没有写Android程序的我突发奇想,想简单写一个每日任务APP。好的!新建工程->写好代码框架->开启模拟器->运行!哎哎哎?!那啥!咋报错了嘞?!来到控制台,看到了我们的主角:

Error:Execution failed for task ':app:compileDebugJavaWithJavac'.> compileSdkVersion 'android-24' requires JDK 1.8 or later to compile.

二、 为啥有这样的错误

这是明摆着告诉我们,当前工程用的是Android SDK 24编译的,也就是之前新出的Android N,虽然没有接触过N版本,但是多少也有耳闻,这个版本除了很多新的特性(听说出AR了,好激动>o<),需要JDK 1.8来支持。嗯!很靠谱的分析-_-||

三、怎么解决呢

有病得治!药不能停啊!要把工程做下去,需要解决这个问题啊!这里有两种解决方法:

1. 来到我们的gradle文件,把与Android SDK 24版本有关的都改为低版本的


build.gradle文件目录

build.gradle文件内容

2. 方法1当然是指标不治本,到以后,我们肯定要用到Android N的特性的,所以与其拖延,不如我们马上把JDK 1.8下过来安装的好。

四、 九曲十八弯的安装之路

原谅我话唠,这里多扯几句哈!哈哈哈哈!

最开始,傻乎乎的我安装的是jre,安装好后发现这个小家伙的安装路径是:

/System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/

然后,我配置了一下Android Studio的JDK的路径,然后就蒙了。。。


JDK路径不可用

后来想想,发现了问题所在:人家热情洋溢地邀请我安装JDK路径,我热情似火地给了它一个JRE的路径,人家当然要给我吃闭门羹啦!哈哈哈哈!不知道有多少小伙伴跟我一样中过枪!

后来到Oracle官网去下载JDK 1.8,Safari右上角友好地提示:下载完成还需2个小时,当时我整个人就愣住了,下载好后都可以睡觉了,哈哈!开个挂吧!打开鱼摆摆,把代理开到美国的弗里蒙特(嘿嘿!安利一下!)网速那个快啊!不到一分钟就搞定了!

说到鱼摆摆,这里强调一下,鱼摆摆的官网是:https://ybb1024.com不是网上所说的http://www.yubaibai.com,这个网站是不是山寨的,代理速度慢到不行!不要点进去哦!

为了照顾没有翻墙的童鞋们,我把JDK放到了百度云盘,这里是下载地址,速度非超级会员下载速度可能会慢一点,但是相比于官网的速度已经快多了哦!

五、 配置JDK路径

我们打开Android Studio,在File->Project Structure...->SDK Location->JDK Location中选择我们的JDK 1.8路径就好!

什么?你不知道刚刚安装的JDK 1.8在哪个路径?下面是JDK 1.8的默认安装路径。

/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home

配置好了!哈哈!终于可以看看我搭的界面框架了,运行工程啦!啦啦啦!来看看我的APP界面吧!


















Booooooooom!!!

好吧!天将降大任于斯人也,必先赐其BUG!哈哈!

六、 结尾有彩蛋

你以为这样就完了?!来!最后再叨叨几句!

说到JDK 1.8,大家应该知道Java JDK 1.8里面的Switch可以支持对字符串进行判别了!如今Open JDK 1.7也支持这样的特性了,Oracle JDK 1.7目前不知道支不支持。既然已经支持了,但是还是有很多童鞋发现,尽管自己使用的是Open JDK 1.7,但是代码里Switch对字符串进行判别还是会报错,这是因为使用的Eclipse版本太旧,其本身编译器还没有支持这种特性,所以说:


阅读全文
0 0