web-dev-qa-db-fra.com

Impossible de compiler avec jdk 11 dans IntelliJ, impossible de trouver le symbole

J'ai défini le JDK 11, il se compile jusqu'à ce que j'utilise la nouvelle méthode de Java 11 isBlank() d'une chaîne lorsque j'utilise cette méthode cette erreur apparaît lors de la compilation, j'ai essayé de nettoyer les installations JDK, le nettoyage des caches d'IntelliJ, la reconstruction mais rien n'y fait. L'erreur est:

enter image description here

9
starsuper

Essayez de définir la version du bytecode cible du compilateur sur 11.

Accédez à Settings - Build, Execution, Deployment - Compiler - Java compiler et définissez version du bytecode cible de votre module à 11

11
caco3

Vous devriez vérifier les choses suivantes:

  1. Vous avez défini JDK11 comme l'un des SDK: enter image description here
  2. Le SDK par défaut de votre projet est JDK11 et le niveau de langue par défaut de votre projet est 11: enter image description here
  3. Le niveau de langue de votre module est également de 11. enter image description here

Et si vous utilisez Maven, vérifiez que les propriétés "source" et "cible" de votre plugin de compilateur dans votre pom.xml sont 11. Votre configuration de niveau de langue de module est importée de ce pom.xml configuration dans un tel cas

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

ou

     <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>

Dans le cas où votre pom.xml le niveau source ou cible est incorrect, vous devrez peut-être le faire. Clic droit | Maven | Réimportez après avoir changé cela pom.xml. Si vous utilisez Gradle, vous devez vérifier que vous avez une configuration similaire.

  1. Le SDK de votre module est le projet JDK11 ou simplement JDK11 enter image description hereenter image description here

Testé avec Maven 3.5.4 dans IntelliJ IDEA 2018.2.4

11
Rostislav Krasny

Vous pouvez utiliser JDK 11 pour compiler mais si vous compilez avec une ancienne version de Java, il ne trouvera pas cette méthode.

Aller à File > Project Structure -> Project et vérifiez le niveau de langue du projet comme indiqué par la flèche dans l'image ci-dessous:

Ne fonctionne pas avec le niveau de langue du projet 10: Wrong project language level

Fonctionne bien avec le niveau de langue du projet 11: Working project language level

Notez que j'ai les éléments suivants Java Paramètres du compilateur (paramètres par défaut pour un nouveau projet à l'aide d'IntelliJ 2018.3)): La version du bytecode du projet est identique au niveau de la langue! Java compiler settings

5
Pim Hazebroek

Pour mon cas, il n'était même pas affiché 11 dans le niveau de langue du projet. J'ai donc dû choisir X comme capture d'écran ci-dessous

enter image description here

1
Omar Faroque Anik

J'avais un problème similaire. Got symbole introuvable pour une fonction Java 11. Bien que tout soit déjà réglé sur 11).

La solution était que dans mes paramètres Idea, la machine virtuelle Java Gradle était définie sur JDK 8. (car j'ai ajouté JDK 11 plus tard)

Comme sourceCompatibilty et targetCompatibility où ils n'étaient pas définis dans mon build.gradle, le démon gradle (démarré depuis Idea) était en cours d'exécution et se compilait avec JDK 8. Ces propriétés étaient définies dynamiquement sur 8 (ou 1,8).

Telling Idea pour définir JVM pour Gradle sur 11 était ma solution:

enter image description here

1
batchmode