我正在测试Java 8的一些新功能,并将示例复制到我的IDE(Eclipse最初,然后是IntelliJ),如图所示here
Eclipse没有为lambda表达式提供任何支持,并且IntelliJ不断报告错误
此语言级别不支持Lambda表达式
我想知道我的安装,代码或支持是否存在问题。
答案 0 :(得分:241)
在IntelliJ IDEA中:
在File Menu
→Project Structure
→Project
,将Project Language Level
更改为8.0 - Lambdas, type annotations etc.
对于Android 3.0 +,请转到File
→Project Structure
→Module
→app
,然后在“属性”标签中将Source Compatibility
和Target Compatibility
设置为{{ 1}}
截图:
答案 1 :(得分:89)
答案 2 :(得分:55)
此解决方案适用于Android Studio 3.0或更高版本。
答案 3 :(得分:41)
对于intellij 13,
只需将项目语言级别本身更改为8.0
,即可进行以下导航。
File
|
|
---------Project Structure -> Project tab
|
|________Project language level
当Modules lang level
没有maven插件时,我还必须更新java compiler
。
File
|
|
---------Project Structure -> Modules tab
|
|________ language level
但如果Module lang level
已经maven plugin
,那么 <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
会自动修复,
{{1}}
更改后的一切看起来都不错
答案 4 :(得分:23)
在Android studio canary build(3. +)中,您可以执行以下操作:
文件 - &gt;项目结构 - &gt;查看模块部分,有类的模块名称。单击要将java升级到1.8版本的模块。 - &GT;将“源兼容性”和“目标兼容性”从1.7或更低更改为1.8。不要改变任何其他东西。 - &GT;点击应用
现在gradle将重新同步,您的错误将被删除。
答案 5 :(得分:18)
只需在build.gradle app:
中添加compileOptions
即可
android {
...
defaultConfig {
...
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
答案 6 :(得分:9)
适用于使用Android studio 3.0.1或更高版本的最新用户。只需单击Alt + Enter并将语言级别升级到8.0 - Lambdas,键入注释等。
答案 7 :(得分:5)
答案 8 :(得分:3)
7.0不支持lambda表达式。只需将其添加到您的应用程序gradle中,即可将语言级别更改为8.0:
compileOptions {
targetCompatibility 1.8
sourceCompatibility 1.8
}
答案 9 :(得分:2)
使用IntelliJ IDEA 15中的Java 8(lambdas等)进行编译;
CTRL + ALT + SHIFT + S
或文件/项目结构
打开“项目”标签
将Project SDK设置为兼容的java版本(1.8)
将项目语言级别设置为8
打开模块标签
将语言级别设置为8,单击“确定”
CTRL + ALT + S
或文件/设置
构建,执行,部署/编译器/ Java编译器
将目标字节码版本更改为1.8,单击“确定”
答案 10 :(得分:2)
使用: IntelliJ IDEA 2017.1.4 Build#IU-171.4694.23
通过“项目设置”/“项目”选项卡更改语言级别没有做任何事情。而是按 Alt + 输入并选择&#34;将语言级别设置为8 - Lambdas,键入注释等。&#34;并自动解决。
答案 11 :(得分:2)
实际上,Eclipse支持Java 8:请参阅here和here。
答案 12 :(得分:1)
同一项目(Android Studio 3.3.2
,gradle-4.10.1-all.zip
,compileSdkVersion 28
,buildToolsVersion '28.0.3'
)
在新的快速Windows计算机上运行正常,并在旧的Ubuntu 18.04笔记本电脑上用红色下划线Java 8
(尽管在Ubuntu上项目编译没有错误)。
我已更改为迫使其停止以红色下划线的仅有的两件事是排除了incremental true
和dexOptions
compileOptions {
// incremental true
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
//dexOptions {
// javaMaxHeapSize "4g"
//}
在app
-级build.gradle
中。
答案 13 :(得分:1)
检查以下设置:
文件->项目结构->项目选项卡。
*Project SDK should be set to 8 or above.*
文件->项目结构->模块。
*Check that your or all modules has Language level set to 8 or above.*
文件->设置(或其他设置->较新的Idea版本中新项目的首选项)
*Search for Java compiler and check if Project byte code version
and per module byte code version is set 8 or above.*
您的问题可能属于以上定义的任何类别。
答案 14 :(得分:1)
正如Stephen C所指出的,Eclipse Kepler(4.3)在安装补丁时支持Java 8(安装说明here)
安装完成后,您需要告诉您的项目使用java 8.首先将JDK添加到eclipse:
然后告诉项目使用JDK 1.8:
答案 15 :(得分:0)
在 Android 项目的应用级 build.gradle 中添加以下几行解决了问题。
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
答案 16 :(得分:0)
对我而言,所提供的解决方案都没有效果。
这应该是你最后的选择: - &GT;打开项目的.iml文件会将LANGUAGE_LEVEL更改为JDK_1_8或您希望的任何版本。 - &GT;如果这没有帮助,你应该grep&#34; JDK&#34;在项目根目录中找到包含版本设置的文件,并将其设置为首选版本。
答案 17 :(得分:0)
可能的原因#1(与此问题的前3个答案相同):项目结构设置
档案&gt;项目结构&gt;在项目设置下,转到项目&gt;将 Project SDK 设置为1.8(版本65或更高版本,最新版本为112)并将项目语言级别设置为8。
档案&gt;项目结构&gt;在“平台设置”下,转到“项目”&gt;确保 JDK主路径设置为1.8(版本65或更高版本,最新版本为112)。
如果上述方法不起作用,请检查编译器的目标字节码版本,然后转到可能的原因#2。
可能的原因#2:编译器
祝福:)
答案 18 :(得分:0)
在intellij 14中,以下设置对我有用。 Intellij14 Settings
答案 19 :(得分:-1)
为lambda表达式支持Ecplise:
答案 20 :(得分:-1)
首先检查您使用的JDK版本,它应该高于1.8。
如果是,则继续执行以下步骤。
在 Intellij 中更改项目和模块的语言级别。
<强>项目强>
1.文件 - &gt;项目结构 - &gt;项目 - &gt;项目语言级别 将lamba表达式更改为8
2.File-&gt;项目结构 - &gt;模块 - &gt;项目语言级别 将lamba表达式更改为8
答案 21 :(得分:-1)
此答案不适用于新的更新的智能...。对于新的智能。
转到->文件->项目结构->全局库==>设置为JDK 1.8或更高版本。
还文件->项目结构--->项目===>将“项目语言手册”设置为8
还文件->项目结构--->项目sdk ==> 1.8
这应该为您的项目启用lambda表达式。
答案 22 :(得分:-1)
Ctrl + Alt + Shift + S然后从项目中选择语言级别1.8,了解有关Lambda表达式的更多信息here