gpt4 book ai didi

java - 安卓工作室 : Why is 'languageLevel' different from 'JDK Location' value on new AS installation?

转载 作者:行者123 更新时间:2023-11-29 04:46:28 26 4
gpt4 key购买 nike

在 AndroidStudio 中,我尝试使用 lambda 表达式,但我得到了 Lambda expressions are not supported at this level警告。但我很确定我已经安装了 java8。

所以我在 Android Studio 中检查了 2 个地方(这是我知道要检查的所有地方):

1 - .idea/misc.xml ……我发现:<component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" ...

2 - Project Structure/SDK Location/JDK Location ……我发现:C:\Program Files\Java\jdk1.8.0_91

此外,如果我转到 C:\Program Files\Java\ ,我什至没有可用的“1.7.*”版本。

(注意:如果我将鼠标悬停在我的 .java 中的 lambda 表达式上,它会给我一个选项 Set language level to 8,我会这样做。)

但我的问题是:为什么这两个设置不同步?

最佳答案

语言层面和JDK不是一回事。如果您查看 javac command line switches你会看到有一些叫做 -source-target,它们允许在版本之间进行一些有限的交叉编译(所以你可以使用较低的源代码级别并发出类文件它将在比您的 JVM 更旧的 JRE 上运行)。通过这种方式,人们可以使用他们的普通 JDK 生成一个库,例如 1.8.0_91,并且该库可以在例如 1.6 上运行。

通过指定语言级别,您将因此导致IDEA使用各种参数给编译器来进行这种跨版本交叉编译。

事实上,您会注意到 IDEA 中有第三个设置指定了此行为。语言级别影响 -source,JDK 的选择影响将调用哪个 JDK 编译器(显然不能从 1.5.0 JDK 编译 -source 1.8 -target 1.8), and Settings->Build->Compiler->Java compiler->Project bytecode version 大概会影响-target

关于java - 安卓工作室 : Why is 'languageLevel' different from 'JDK Location' value on new AS installation?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36921488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com