[英]Java IntelliJ 13.1.4 “Lambda expressions are not supported at this language level.”
[英]Java “lambda expressions not supported at this language level”
我的Java 8的一些新功能和復制的例子測試伸到我的IDE(Eclipse的原話的IntelliJ)如圖所示這里
Eclipse 不提供對 lambda 表達式的任何支持,並且 IntelliJ 不斷報告錯誤
此語言級別不支持 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,只需使用以下導航將項目語言級別本身更改為8.0
。
File
|
|
---------Project Structure -> Project tab
|
|________Project language level
當沒有用於java compiler
maven 插件時,我還必須更新Modules lang level
。
File
|
|
---------Project Structure -> Modules tab
|
|________ language level
但是如果已經有一個maven plugin
,這個Module lang level
將自動修復,
<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.+) 中,您可以執行以下操作:
File -> Project Structure -> Look in Modules Section,有你的類的模塊名稱。 單擊要升級 java 到 1.8 版本的模塊。 -> 將“源兼容性”和“目標兼容性”從 1.7 或更低更改為 1.8。 不要更改任何其他內容。 -> 點擊應用
現在 gradle 將重新同步,您的錯誤將被刪除。
只需在 build.gradle 您的應用程序中添加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、鍵入注釋等。
在 IntelliJ IDEA 15 中使用 Java 8(lambdas 等)進行編譯;
CTRL + ALT + SHIFT + S
或文件/項目結構
打開項目選項卡
將項目 SDK 設置為兼容的 Java 版本 (1.8)
將項目語言級別設置為 8
打開模塊選項卡
將語言級別設置為 8,單擊“確定”
CTRL + ALT + S
或文件/設置
構建、執行、部署 / 編譯器 / Java 編譯器
將目標字節碼版本更改為 1.8,單擊確定
使用:IntelliJ IDEA 2017.1.4 Build #IU-171.4694.23
通過項目設置/項目選項卡更改語言級別沒有任何作用。 而不是按 Alt + Enter並選擇“將語言級別設置為 8 - Lambdas,鍵入注釋等”。 並自動解決。
正如 Stephen C 指出的,Eclipse Kepler (4.3) 在安裝補丁時支持 Java 8(安裝說明 在這里)
安裝后,您需要告訴您的項目使用 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.*
文件->設置(或其他設置->新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 機器上運行良好,並在舊的 Ubuntu上用紅色強調Java 8
東西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 個答案相同):項目結構設置
文件>項目結構>在項目設置下,進入項目>將項目SDK設置為1.8(65或以上版本,最新為112)並將項目語言級別設置為8。
文件 > 項目結構 > 在平台設置下,進入項目 > 確保您的JDK 主路徑設置為 1.8(65 或更高版本,最新為 112)。
如果上述方法不起作用,請檢查編譯器的目標字節碼版本,然后轉到可能的原因 #2。
可能的原因#2:編譯器
最好的祝願 :)
對我來說,提供的解決方案都沒有奏效。
這應該是您最后的手段:-> 打開您項目的 .iml 文件,將 LANGUAGE_LEVEL 更改為 JDK_1_8 或您希望的任何版本。 -> 如果這沒有幫助,您應該在項目根目錄中 grep "JDK" 並找到包含版本設置的文件並將其設置為您的首選版本。
在 Android 項目中的應用程序級 build.gradle 中添加以下行解決了問題。
compileOptions {
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
Ctrl + Alt + Shift + S 然后從項目中選擇語言級別 1.8, 在此處閱讀有關 Lambda 表達式的更多信息
要支持 Ecplise 的 lambda 表達式:
首先檢查您使用的JDK版本,它應該高於1.8。
如果是,則繼續執行以下步驟。
在Intellij 中更改項目和模塊的語言級別。
項目
1.File->Project Structure->Project->Project language level 改成8,lamba表達式才能工作
2.File->Project Structure->Module->Project language level 改成8,lamba表達式才能工作
這個答案不適用於新的更新的智能......對於新的智能......
轉到 --> 文件 --> 項目結構 --> 全局庫 ==> 設置為 JDK 1.8 或更高版本。
還有文件 --> 項目結構 ---> 項目 ===> 將“項目語言手冊”設置為 8
還有文件 --> 項目結構 ---> 項目 sdk ==> 1.8
這應該為您的項目啟用 lambda 表達式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.