我正在测试Java 8的一些新功能,并将示例复制到我的IDE(Eclipse最初,然后是IntelliJ),如图所示here
Eclipse没有为lambda表达式提供任何支持,IntelliJ不断报告错误
此语言级别不支持Lambda表达式
我想知道这是我的安装,代码或支持的问题。
实际上,Eclipse支持Java 8:请参阅here和here。
在IntelliJ IDEA 15中使用Java 8(lambdas等)进行编译;
CTRL + ALT + SHIFT + S
或文件/项目结构CTRL + ALT + S
或文件/设置使用:IntelliJ IDEA 2017.1.4 Build#IU-171.4694.23
通过“项目设置”/“项目”选项卡更改语言级别没有执行任何操作。而是按Alt + Enter并选择“将语言级别设置为8 - Lambdas,键入注释等”。它自动解决。
正如Stephen C所指出的,Eclipse Kepler(4.3)在安装补丁时支持Java 8(安装说明here)
安装完成后,您需要告诉您的项目使用java 8.首先将JDK添加到eclipse中:
然后告诉项目使用JDK 1.8:
检查以下设置:
*Project SDK should be set to 8 or above.*
*Check that your or all modules has Language level set to 8 or above.*
*Search for Java compiler and check if Project byte code version
and per module byte code version is set 8 or above.*
您的问题可能属于上面定义的任何一个类别。
同样的项目(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
。
在intellij 14中,以下设置对我有用。 Intellij14 Settings
即使在IntelliJ和Eclipse上应用了上面定义的项目特定设置之后,它仍然失败了!
对我来说有用的是添加带有源和目标的maven插件以及POM XML中的1.8设置:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.0.2</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>com.abc.sparkcore.JavaWordCount</mainClass>
</manifest>
</archive>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy</id>
<phase>install</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
可能的原因#1(与此问题的前3个答案相同):项目结构设置
如果上述操作无效,请检查编译器的目标字节码版本,然后继续执行可能的原因#2。
可能的原因#2:编译器
最好的祝愿 :)
对我来说,提供的解决方案都没有奏效。
这应该是你最后的选择: - >打开项目的.iml文件将LANGUAGE_LEVEL更改为JDK_1_8或任何你想要的版本。 - >如果这没有帮助,你应该在项目根目录中grep“JDK”并找到包含版本设置的文件并将其设置为首选版本。
按Ctrl + Alt + Shift + S然后从项目中选择语言级别1.8,了解有关Lambda表达式的更多信息here
为lambda表达式支持Eclipse:
首先检查您使用的JDK版本,它应该高于1.8。
如果是,则继续执行以下步骤。
更改Intellij中项目和模块的语言级别。
项目
1.文件 - >项目结构 - >项目 - >项目语言级别将其更改为8,以使lambda表达式起作用
2.文件 - >项目结构 - >模块 - >项目语言级别将其更改为8,以使lambda表达式起作用
这个答案不适用于新的更新的智能...用于新的智能...
转到 - >文件 - >项目结构 - >全局库==>设置为JDK 1.8或更高版本。
还有文件 - >项目结构--->项目===>将“项目语言手册”设置为8
还有文件 - >项目结构--->项目sdk ==> 1.8
这应该为您的项目启用lambda表达式。
此解决方案适用于Android Studio 3.0或更高版本。
将Source Compatibility
和Target Compatibility
都改为1.8
您也可以直接在相应的build.gradle文件中进行配置
android {
...
// Configure only for each module that uses Java 8
// language features (either in its source code or
// through dependencies).
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
对于intellij 13,只需使用以下导航将Project语言级别本身更改为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>
改变后一切看起来都不错
在Android studio canary build(3. +)中,您可以执行以下操作:
文件 - >项目结构 - >查看模块部分,有类的模块名称。单击要将java升级到1.8版本的模块。 - >从1.7或更低版本将“源兼容性”和“目标兼容性”更改为1.8。不要改变任何其他东西。 - >单击“应用”
现在gradle将重新同步,您的错误将被删除。
只需在build.gradle你的app中添加compileOptions
:
android {
...
defaultConfig {
...
jackOptions {
enabled true
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
适用于使用Android studio 3.0.1或更高版本的最新用户。只需单击Alt + Enter并将语言级别升级到8.0 - Lambdas,键入注释等。