ここに示すように、Java 8のいくつかの新機能をテストし、サンプルをIDE(元々はEclipse、次にIntelliJ)にコピーしました
Eclipseはラムダ式をまったくサポートしていません。IntelliJはエラーを報告し続けました
ラムダ式はこの言語レベルではサポートされていません
これがインストール、コード、またはサポートの問題かどうかを知りたいのですが。
ここに示すように、Java 8のいくつかの新機能をテストし、サンプルをIDE(元々はEclipse、次にIntelliJ)にコピーしました
Eclipseはラムダ式をまったくサポートしていません。IntelliJはエラーを報告し続けました
ラムダ式はこの言語レベルではサポートされていません
これがインストール、コード、またはサポートの問題かどうかを知りたいのですが。
回答:
IntelliJ IDEAの場合:
ではFile Menu
→ Project Structure
→ Project
、変更Project Language Level
へ8.0 - Lambdas, type annotations etc.
アンドロイド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の場合は、次のナビゲーションでプロジェクトの言語レベル自体を単に変更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にアップグレードします-ラムダ、タイプ注釈など。
IntelliJ IDEA 15でJava 8(lambdasなど)を使用してコンパイルするには、
CTRL + ALT + SHIFT + S
またはファイル/プロジェクト構造
プロジェクトタブを開く
Project SDKを互換性のあるJavaバージョン(1.8)に設定する
プロジェクトの言語レベルを8に設定します
[モジュール]タブを開く
言語レベルを8に設定し、[OK]をクリックします
CTRL + ALT + S
またはファイル/設定
ビルド、実行、配置/コンパイラ/ Javaコンパイラ
ターゲットのバイトコードバージョンを1.8に変更し、[OK]をクリックします
使用:IntelliJ IDEA 2017.1.4ビルド#IU-171.4694.23
[プロジェクトの設定] / [プロジェクト]タブで言語レベルを変更しても、何も起こりませんでした。代わりにAlt+ Enterを押して、「言語レベルを8に設定-ラムダ、型注釈など」を選択します。そしてそれは自動的に解決されました。
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.*
[ファイル]-> [設定](または[その他の設定]-> [新しいアイデアバージョンの新しいプロジェクトの設定])
*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の上でエラーなしでコンパイルされます)。
赤で下線を引くのを強制するために私が変更した唯一の2つのことは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の1.8設定のソースとターゲットを含むmavenプラグインの追加でした。
<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または任意のバージョンに変更します。->これで問題が解決しない場合は、プロジェクトのルートディレクトリで「JDK」をgrepし、バージョン設定を含むファイルを見つけて、適切なバージョンに設定する必要があります。
ラムダ式のEcpliseをサポートするには:
最初に、使用しているJDKのバージョンを確認してください。バージョンは1.8より高いはずです。
その場合は、以下の手順を実行してください。
Intellijのプロジェクトとモジュールの言語レベルを変更します。
事業
1.File-> Project Structure-> Project-> Project言語レベルを8に変更して、ランバ式が機能するようにします。
2.File-> Project Structure-> Module-> Project言語レベルを8に変更して、ランバ式が機能するようにします。