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)

James Raitsev
la source

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

CrazyCoder
la source
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

Drew Noakes
la source
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

ROUMANIE_ingénieur
la source
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>
swissonid
la source
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é.

Rob Barreca
la source
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)

eger
la source
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>
Joe Cheng
la source
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.

Robert Moszczynski
la source
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

pveentjer
la source
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.

OMax
la source
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)

mati
la source
1

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

kai
la source
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.

Cagatay Kalan
la source
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.

Gus
la source
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.

naXa
la source
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.

Viraj Kulkarni
la source
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, ...)

Youness Marhrani
la source
0

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

entrez la description de l'image ici

Nirbhay Rana
la source