web-dev-qa-db-ja.com

IntelliJでjdk 11でコンパイルできない、シンボルが見つからない

JDK 11を設定し、StringのJava 11 isBlank()]という新しいメソッドを使用するまでコンパイルします。そのメソッドを使用すると、コンパイル時にこのエラーが表示されます。 JDKのインストール、IntelliJからのキャッシュのクリーニング、再構築が何の助けにもなりません。エラーは次のとおりです。

enter image description here

9
starsuper

コンパイラのターゲットバイトコードバージョンを11に設定してみてください。

Settings-Build, Execution, Deployment-Compiler-Java compilerに移動して、モジュールターゲットバイトコードバージョンを設定します。 11

11
caco3

次のことを確認する必要があります。

  1. JDK11をSDKの1つとして定義しました: enter image description here
  2. プロジェクトのデフォルトSDKはJDK11で、プロジェクトのデフォルト言語レベルは11です。 enter image description here
  3. モジュールの言語レベルも11です。 enter image description here

Mavenを使用している場合は、コンパイラプラグインの「ソース」および「ターゲット」プロパティがpom.xmlは11です。モジュールの言語レベルの設定は、そこからインポートされますpom.xmlそのような場合の設定

     <properties>
         <maven.compiler.source>11</maven.compiler.source>
         <maven.compiler.target>11</maven.compiler.target>
     </properties>

または

     <plugin>
        <groupId>org.Apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.0</version>
        <configuration>
            <source>11</source>
            <target>11</target>
        </configuration>
     </plugin>

pom.xml間違ったソースまたはターゲットレベルがありました。メイヴン|変更後、再インポートpom.xml。 Gradleを使用する場合は、同様の構成があることを確認する必要があります。

  1. モジュールSDKはProject JDK11または単なるJDK11 enter image description hereenter image description here

IntelliJのMaven 3.5.4でテスト済みIDEA 2018.2.4

11

JDK 11を使用してコンパイルできますが、古いバージョンのJavaに対してコンパイルした場合、そのメソッドは見つかりません。

File > Project Structure -> Projectに移動し、下の図の矢印で示されているようにプロジェクトの言語レベルを確認します。

プロジェクト言語レベル10で動作しない: Wrong project language level

プロジェクト言語レベル11で正常に動作します: Working project language level

以下のことに注意してくださいJavaコンパイラー設定(IntelliJ 2018.3を使用した新しいプロジェクトのデフォルト設定):プロジェクトのバイトコードバージョンは言語レベルと同じです! Java compiler settings

5
Pim Hazebroek

私の場合、プロジェクト言語レベルで11さえ表示されていませんでした。だから、スクリーンショットの下のようにXを選択する必要がありました

enter image description here

1

同様の問題がありました。 シンボルが見つかりません Java 11機能。すべてがすでに11に設定されていましたが。

解決策は、Ideaの設定でGradle JVMがJDK 8に設定されていることです(JDK 11を後で追加したため)

Build.gradleで設定されていないsourceCompatibiltyおよびtargetCompatibilityとして、Gradeデーモン(Ideaから起動)が実行され、JDK 8でコンパイルされました。これらのプロパティは動的に8(または1.8)に設定されます。

私のソリューションは、GradleのJVMを11に設定するようにIdeaに伝えることでした。

enter image description here

1
batchmode