IDÉE: javac: la version source 1.7 nécessite la version cible 1.7


474

Lors de l'exécution d'un test JUnit, en utilisant IntelliJ IDEA, j'obtiens

entrez la description de l'image ici

Comment puis-je corriger cela?

  • Utilisation du SDK 1.7
  • Le niveau de langue du module est de 1,7

La construction de Maven fonctionne bien. (C'est pourquoi je crois cela dans le problème de configuration IDEA)

Réponses:


689

Vous avez probablement des options de compilateur incorrectes importées de Maven ici:

options du compilateur

Vérifiez également les paramètres de version du projet et du module bytecode ( cible ) décrits sur la capture d'écran.

Autres endroits où le niveau de langue source est configuré:

  • Structure du projet | Projet

projet

  • Structure du projet | Modules (vérifiez chaque module) | Sources

sources

Le niveau de langue par défaut de Maven est 1.5 (5.0), vous verrez cette version comme niveau de langue du module sur la capture d'écran ci-dessus.

Cela peut être changé en utilisant la configuration maven-compiler-plugin à l' intérieur pom.xml:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

ou

<project>
  [...]
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  [...]
</project>

IntelliJ IDEA respectera ce paramètre après avoir réimporté le projet Maven dans la fenêtre de l'outil Maven Projects :

réimporter


2
Correct. Ce paramètre est-il commun à tous les modules d'un projet ou est-il spécifique à un module donné?
James Raitsev

1
Ce paramètre est par projet, affecte tous les modules.
CrazyCoder du

8
Y a-t-il une raison pour laquelle après avoir corrigé cela et appliqué qu'il reviendrait à une valeur incorrecte (soit via des modifications Maven ou quelque chose)?
Patrick

5
@Patrick, votre pom.xmlconfiguration de plug-in de compilateur java peut spécifier la version Java qui remplacera ce paramètre la prochaine fois que vous apporterez des modifications au fichier pom.xml (si la réimportation automatique est activée) ou réimportez le projet manuellement.
CrazyCoder

1
@CrazyCoder J'ai changé mon pom.xml après l'avoir changé une fois beaucoup plus tôt (j'attendais d'autres changements entrants sur le pom), donc cela ressemble à une explication assez raisonnable. Merci
Patrick

358

IntelliJ 15, 2016 et 2017

Similaire à celui discuté ci-dessous pour IntelliJ 13 & 14, mais avec un niveau supplémentaire dans le panneau Paramètres / Préférences: Paramètres > Build, Execution, Deployment > Compiler > Java Compiler .

entrez la description de l'image ici

IntelliJ 13 & 14

Dans IntelliJ 13 et 14, vérifiez les paramètres> compilateur> interface utilisateur du compilateur Java pour vous assurer que vous ne ciblez pas une version de bytecode différente dans votre module.

entrez la description de l'image ici


3
J'ai dû supprimer mes modules et le laisser résoudre automatiquement (laisser vide pour jdk par défaut)
Akin Okegbile

3
Fonctionne pour la dernière Idea14.1
Tushar

Alors, quelle est la solution ici?
AlikElzin-kilaka

@ AlikElzin-kilaka, définissez le niveau cible à tout ce dont vous avez besoin.
Drew Noakes

Quelqu'un peut-il expliquer pourquoi il mettrait des paramètres de module spécifiques dans l'écran de configuration des préférences globales, pas dans les paramètres du module?
MK.

61

Dans IntelliJ IDEA 14.1, la "version du bytecode cible" est à un endroit différent.

Le changement suivant a fonctionné pour moi:

Fichier> Paramètres ...> Build, Execution, Deployment> Compiler> Java Compiler : changez la version cible du bytecode de 1.5 à 1.8

entrez la description de l'image ici

entrez la description de l'image ici


ou il vaut mieux le laisser vide, quand il peut être déterminé à partir de jdk!
Dragonborn

Pourquoi la configuration est-elle différente de celle de maven?
AlikElzin-kilaka

42

Avez-vous regardé la configuration de votre build, cela devrait être le cas si vous utilisez maven 3 et JDK 7

<build>
    <finalName>SpringApp</finalName>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.7</source>
                <target>1.7</target>
            </configuration>
        </plugin>
        ...
    </plugins>
    ...
</build>

22

J'ai rencontré cela et le correctif devait aller dans Paramètres du projet> Modules> cliquez sur le module particulier> onglet Dépendances. J'ai remarqué que le module SDK était toujours réglé sur 1.6, je l'ai changé en 1.7 et cela a fonctionné.


J'ai essayé cela ... J'ai fini par devoir supprimer les modules individuels et les laisser résoudre automatiquement.
Akin Okegbile

14

J'ai trouvé les options requises («version de bytecode cible») dans les paramètres> compilateur> compilateur java dans mon cas (idée d'Intelij 12.1.3)


10

Modifiez le fichier de paramètres du compilateur du projet dans le chemin suivant et changez la «cible» en 1.7:

/project/.idea/compiler.xml

<bytecodeTargetLevel>
  <module name="project-name" target="1.7" />
</bytecodeTargetLevel>

Merci, cela a fonctionné pour moi! N'oubliez pas de faire "Make Module '[nom de votre application]" "en faisant un clic droit sur le projet
Shehaaz

5

Je l'ai résolu en définissant le champ vide:

Paramètres> Compilateur> Compilateur Java> Version bytecode du projet

Qu'IntelliJ utilise la version par défaut du JDK.


4

D'un moment à l'autre, j'ai également eu cette erreur sans raison claire. J'ai changé toutes sortes de paramètres sur le compilateur / module, etc. Mais au final, je viens de recréer le projet IntelliJ en réimportant le projet Maven et le problème a été résolu. Je pense que c'est un bug.

IntelliJ 12 129.961


Idem ici pour IntelliJ 14.1.2. Réimporté le projet et il a été corrigé.
srikanth

4

Je l'ai rencontré après une mise à niveau mineure d'IntelliJ IDEA 14 vers la v14.1. Pour moi, changer une modification de pom supérieur / parent a aidé, puis cliqué sur réimporter Maven (si ce n'est pas automatique).

Mais il suffit peut-être de faire un clic droit sur le (s) module (s) / module agrégé / parent et Maven -> Réimporter.


cela a fonctionné pour moi! je l'ai fait pour mon module de niveau supérieur et mes modules enfants
abelnation

2

J'ai résolu la méthode ci-dessous

Fichier >> Structure du projet >> Projet >> Niveau de langue du projet -> définir la version appropriée (ex: 1.5)


1

vérifiez .idea / misc.xml parfois vous devez changer l'attribut languageLevel = "JDK_1_X" manuellement


1

S'il s'agit d'un projet Gradle, dans votre fichier build.gradle, recherchez les paramètres suivants:

sourceCompatibility = "xx"
targetCompatibility = "xx"

Pour tous les sous-projets, dans votre fichier racine build.gradle, vous pouvez mettre:

subprojects { project ->
    sourceCompatibility = "1.7"
    targetCompatibility = "1.7"
}

Bien que vous puissiez définir manuellement les niveaux de langue dans Idea> Paramètres, s'il s'agit d'un projet Gradle, Idea synchronise automatiquement les fichiers .iml du module à partir des paramètres Gradle (testé avec Idea 15+). Ainsi, toutes vos modifications manuelles sont annulées lorsque Gradle est actualisé.

Sur la base de la documentation Gradle , si ceux-ci ne sont pas définis, la configuration JVM actuelle est utilisée.


1

J'ai trouvé un autre moyen de rencontrer cette erreur. Vous pouvez l'obtenir si vous avez réorganisé votre structure de répertoires, et l'un de vos poms pointe vers l'ancien parent qui ne configure plus javac (car cette configuration a été déplacée vers un niveau intermédiaire). Si cela se produit, le niveau supérieur par défaut est de 1,5 et le pom de niveau inférieur qui se comporte mal en hérite.

Donc, une autre chose à vérifier lorsque vous voyez cette erreur est que votre structure pom correspond correctement à la structure de votre répertoire.


1

Si la construction Maven fonctionne correctement, essayez de synchroniser la structure des projets Maven et IntelliJ IDEA.

Dans la fenêtre de l'outil Maven , cliquez sur le bouton Actualiser rafraîchir. En appuyant sur ce bouton, IntelliJ IDEA analyse la structure du projet dans la fenêtre de l'outil Maven.

Notez que cela pourrait ne pas aider si vous utilisez la génération EAP, car la fonctionnalité de synchronisation Maven peut parfois être interrompue.


0

Assurez-vous que la bonne dépendance est sélectionnée. Fichier> Structure du projet

Sélectionnez votre projet et accédez à l'onglet Dépendances. Sélectionnez la bonne dépendance dans la liste déroulante ou créez-en une nouvelle.


0

Si toutes les solutions précédentes n'ont pas fonctionné pour vous (ce qui était mon cas), vous pouvez supprimer les fichiers de configuration intellij:

  • répertoire_projet / .idea / compiler.xml
  • répertoire_projet / .idea / encodings.xml
  • répertoire_projet / .idea / misc.xml
  • répertoire_projet / .idea / modules.xml
  • répertoire_projet / .idea / vcs.xml
  • répertoire_projet / .idea / workspace.xml
  • etc.

Intellij en régénérera plus tard. Cependant, ATTENTION, cela supprimera également toutes les configurations intellij faites sur le projet (ex: configuration du mode debug, ...)


0

Vous devez changer la version du compilateur Java dans la configuration de construction.

entrez la description de l'image ici

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.