我的Java 8的一些新功能和复制的例子测试伸到我的IDE(Eclipse的原话的IntelliJ)如图所示这里
Eclipse不提供对lambda表达式的任何支持,并且IntelliJ不断报告错误
此语言级别不支持Lambda表达式
我想知道我的安装,代码或支持是否存在问题。
我的Java 8的一些新功能和复制的例子测试伸到我的IDE(Eclipse的原话的IntelliJ)如图所示这里
Eclipse不提供对lambda表达式的任何支持,并且IntelliJ不断报告错误
此语言级别不支持Lambda表达式
我想知道我的安装,代码或支持是否存在问题。
Answers:
在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.8 (Java 8)
屏幕截图:
File Menu → Project Structure → Modules
,但是默认情况下,它将与项目语言级别相同。
android { compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } }
File
-> Project Structure
-> Module you want to support lambdas
并将“ 源兼容性”和“ 目标兼容性”设置为1.8
此解决方案可在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>
更改后,一切看起来都很好
只需添加compileOptions
build.gradle您的应用程序即可:
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-Lambda,输入注释等。
正如Stephen C所指出的,安装补丁时Eclipse Kepler(4.3)具有Java 8支持(此处的安装说明)
安装后,您需要告诉您的项目使用Java8。首先将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.*
文件->设置(或其他设置->新版本Idea中新项目的首选项)
*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机器和下划线Java 8
以红色的东西,老的Ubuntu 18.04的笔记本电脑(但项目没有错误编译在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设置
即使在IntelliJ和Eclipse上应用了上面定义的项目特定设置之后,它仍然对我来说失败了!
对我有用的是在POM XML中添加了带有源和目标的maven插件以及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个答案相同):项目结构设置
在“文件”>“项目结构”>“项目设置”下,转到“项目”>,将Project SDK设置为1.8(版本为65或更高版本,最新版本为112),并将“ 项目语言级别”设置为8。
在“文件”>“项目结构”>“平台设置”下,转到“项目”>,确保您的JDK主目录路径设置为1.8(对于65或更高版本,最新为112)。
如果上述方法不起作用,请检查编译器的目标字节码版本,然后继续进行可能的原因2。
可能的原因2:编译器
最好的祝愿 :)
对我而言,所提供的解决方案均无效。
这应该是您的最后选择:->打开项目的.iml文件,将LANGUAGE_LEVEL更改为JDK_1_8或所需的任何版本。->如果这样做没有帮助,则应在项目根目录中grep“ JDK”并找到包含版本设置的文件,并将其设置为首选版本。
Ctrl + Alt + Shift + S,然后从项目中选择语言级别1.8,在此处详细了解Lambda表达式
首先检查您使用的JDK版本,它应该高于1.8。
如果是这样,请继续执行以下步骤。
在Intellij中更改项目和模块的语言级别。
项目
1.File-> Project Structure-> Project-> Project语言级别将其更改为8以使Lamba表达式起作用
2.File-> Project Structure-> Module-> Project语言级别将其更改为8以使Lamba表达式起作用