web-dev-qa-db-fra.com

IDEA JetBrains IntelliJ - Erreur de compilation sur 'make' mais acceptable lors de la compilation avec Maven et aucune erreur signalée par IntelliJ dans le fichier de classe

J'ai donc un module maven (module-A) dans IntelliJ. J'ai récemment déplacé certaines classes de celui-ci dans un autre nouveau module maven (module-B) et y ai ajouté une dépendance. Une fois cela fait, j'ai également modifié la signature d'une méthode de l'une des classes déplacées (maintenant dans le module-B). 

J'ai réimporté les noms de domaine afin qu'IntelliJ enregistre les modifications de dépendance et s'assure que toutes les importations Java pour les fichiers affectés sont à nouveau correctes. Maintenant, lorsque je tente d'exécuter mon application Web (qui dépend des deux modules), une erreur de compilation survient dans une classe du module-A qui appelle la méthode modifiée de la classe dans le module-B. 

Le message d'erreur indique en gros que cette méthode n'existe pas mais pense que l'ancienne méthode existe toujours! Je clique sur l'erreur 'make' et cela m'amène à la ligne d'une classe du module-A appelant la méthode modifiée ... Ce qui est étrange, c'est qu'IntelliJ sait que tout va bien dans le fichier. c'est-à-dire que la méthode n'est pas soulignée en rouge comme le serait normalement une erreur de compilation, mais le nom du fichier de classe est :(

Je l'ai compilé à partir de la ligne de commande en utilisant 'mvn install' (ayant également installé le module B) et tout cela a réussi. J'ai supprimé le répertoire de classes dans la cible du module-A et du module-B et invalidé les caches d'IntelliJ et redémarré ... toujours en cours ... des idées?

38
Ed .

Alors viens de le dire ce matin et tout fonctionne!

La nuit dernière, j’ai ouvert un nouveau projet (projet intelliJ) à partir du pom parent du module-A et du module-B. bien que

2
Ed .

J'ai découvert que cela pourrait aider:

Fichier -> Invalider les caches

39
OhadR

Maven Projects -> Reimport devrait aider.

21
Ivan Voroshilin

J'ai passé quelques heures sur le même problème. Tous les nettoyages dans le monde n'ont pas aidé. 

J'ai supprimé les répertoires out et target de mon projet et les ai recompilés, ce qui l'a effacé.

Edit: Il existe également une fonctionnalité magique dans le menu Fichier: "Invalidate Caches/Restart" Ceci corrige un tas de problèmes "intellij is confused".

15
bsautner

Modifiez le paramètre "Java Compiler" dans IDEA (compilateur utilisateur javac en cours de traitement) pour résoudre le problème. 

7
user1239332

Essayez de mvn clean vos projets et mvn install votre projet B.

L'intégration de maven avec intelliJ est un peu gênante lorsque vous utilisez la commande make fournie directement par Intellij. Vous devez utiliser directement les commandes mvn ou les démarrer à partir du panneau maven.

6
Colin Hebert

J'ai rencontré un problème très similaire qui me rendait fou.

Mon code se compilerait bien avec la tâche ant que je lance normalement, mais il ne serait pas intégré à IntelliJ, se plaignant de "Impossible de trouver le symbole blah blah"

Il s'avère que vous pouvez ajouter des fichiers "exclus" pour le compilateur. Mon fichier s'est en quelque sorte ajouté à cette liste.

Cette liste se trouve dans Fichier> Paramètres> Compilateur> Exclure (IntelliJ 13).

4
spudfkc

Les étapes suivantes devraient résoudre ce problème:

  1. delete .IntelliJIdea12/.IdeaIC12 ancien sous c:/user /.../
  2. Invalider le cache d'Intelli: Fichier> Invalider les caches .
    Ceci réindexe votre espace de travail au démarrage et efface votre historique local . Avant de faire cela, commettez ou sauvegardez toutes vos modifications non validées.
  3. Une fois que votre espace de travail est revenu après l’indexation, effectuez un maven clean install .
  4. une fois la compilation réussie, cliquez sur Maven Re-imports

Cela a fonctionné pour moi , je pense que cela devrait fonctionner pour les autres aussi avec un problème similaire.

3
vishy12

Le comportement que je vois est similaire à celui décrit par l'auteur d'origine . Les marqueurs d'erreur apparaissent dans la partie droite de l'éditeur dans Intellij 14 et moins dans 13.

Cela se produit également si vous utilisez Scala au lieu de Java et utilisez SBT au lieu de Maven.

Cela a également été noté après le chargement du deuxième projet. La première convient toujours . (Après de nombreux essais et erreurs) Je pensais que cela pouvait être causé par la corruption des caches internes d'Intellij. "Invalidate caches" a parfois fonctionné et parfois non.

Je travaille avec plusieurs projets utilisant Play! Framework et ils utilisent différentes versions de Scala et de nombreuses dépendances . J'ai supposé que les caches étaient corrompus, car la clé interne utilisée par Intellij n'était pas suffisante pour gérer les situations où la même classe, chargée plusieurs fois dans des fichiers JAR différents, avait des signatures différentes Cela entraîne des erreurs dans l’éditeur alors que les versions externes fonctionnent correctement.

Ensuite, cliquez sur "Emplacement de changement de cache Ivy pour les projets sbt dans IntelliJ IDEA?" post a donné l’idée de séparer l’utilisation du cache ivy SBT et Intellij dans l’espoir que le chemin ivy fasse partie de la clé de cache interne.

Paul Phillips de TypeSafe fournit l’outillage "SBT extras" et j’ai trouvé un moyen de demander à SBT d’utiliser une base de projet ivy home, cache et SBT:

https: //raw.githubusercontent.com/paulp/sbt-extras/master/sbt

declare -r noshare_opts = "- Dsbt.global.base = projet/.sbtboot -Dsbt.boot.directory = projet/.boot -Dsbt.ivy.home = projet/.ivy"

Enfin débarrassé de l'utilisateur .ivy2 basé à la maison et de tout le contenu ..__ Pour être sûr qu'Intellij n'utilise pas ce dossier, je l'ai lu en lecture seule . C'était une erreur. Intellij semble échouer en silence pour résoudre les dépendances si vous procédez ainsi.

Cela a résolu les erreurs et je pense qu'ils ne reviendront pas. :-)

Si les gars d'Intellij entendent ceci: testez vos versions (Scala, SBT, éditeur) avec tous les modèles Play Framework de TypeSafe. Le problème devient vite évident de cette façon.

2
SemanticBeeng

Dans mon cas, j'avais manuellement marqué un répertoire comme "racine des sources de test" mais IDEA l'avait marqué dans un projet Maven parent. Unmarking dans File-> Structure du projet ...-> Les modules ont résolu le problème.

1
Alejandro Duarte

Cela peut se produire si vous utilisez une version différente de Java lors de la génération en dehors de IntelljJ. Mon IntelliJ avait Java10 et j'utilisais Java8 lors de la construction du terminal. Le passage de la version Java à IntelliJ a résolu ce problème pour moi. 

1
false9striker

Je viens d'avoir un problème similaire qui me rendait fou. J'ai fait toutes les autres choses mentionnées dans les réponses ci-dessus parce que j'utilise Intellij depuis toujours, mais aucune n'a fonctionné. En fin de compte, j’ai découvert que dans la partie des projets maven d’Intellij, l’un de mes modules avait été marqué "ignorer" une simple commande unignore du menu contextuel.

1
Fortytwo

Je suis gêné de le dire, mais nous avons également eu ce problème, mais cela était dû à une erreur dans le nom de notre paquet.

Lors de la création des packages pour un nouveau projet, j'ai accidentellement créé un package appelé "org.package".

Mon projet avait alors une structure de répertoire comme:

/src/main/Java/org.package/

Ce qui a causé toutes sortes de ravages avec IntilliJ.

Une fois que la structure de dossiers correcte a été créée sur le système de fichiers, IntelliJ a très bien fonctionné.

/ src/main/Java/org/package /

Notez la différence dans /org.package/ vs/org/package /

0
hooknc

J'étais confronté à un problème similaire après la mise à niveau d'IntelliJ 12 à 13. Après plusieurs désinstallation et réinstallation (de plusieurs versions d'intelliJ), de nombreux nettoyages et effacement du référentiel .m2, j'ai finalement compris quel était mon problème.

Dans mes paramètres intelliJ, les référentiels mentionnés dans mon fichier POM principal ne pouvaient pas être connectés. c'était à son tour dû et un référentiel alternatif qui a été mentionné en tant que partie de mon fichier pom . Une fois que le POM a été désigné pour pointer vers le référentiel correct, toutes mes classes ont eu leurs problèmes de compilation résolus.

Pour vérifier si vos référentiels sont connectés, accédez à Fichier -> Paramètres -> Maven -> Référentiels

Ici, vos référentiels Maven indexés doivent être connectés avec succès. Sinon, intelliJ ne sera pas en mesure de résoudre la plupart des dépendances de tiers et de modules.

0
Aditya Satyavada

Le correctif était que je l'ai fait javac au lieu de Ajc et j'ai mis 1.8 bien sûr en fonction de votre version de jdk.

pour une raison quelconque, lorsque j'invalide et redémarre intellij, il était configuré par défaut!

 after i fixed i made it javac instead of Ajc

ma version est 

 enter image description here

0
shareef

C'est ce qui m'est arrivé ... ce qui a été résolu, c'est de réaliser qu'il y avait un fichier main.iml supplémentaire dans le répertoire source. Supprimer qui a instantanément fait disparaître les erreurs de compilation.

0
Nathan Adams

J'ai rencontré ce problème aujourd'hui après avoir mis à niveau de 12 à 13.

Plus tard, j'ai corrigé le problème car j'utilisais le même nom pour Project et Module et il semble qu'Intellij le permette mais ne peut pas le gérer correctement.

Aucune idée pourquoi la configuration aura un impact sur la compilation, bien qu'il n'y ait pas d'erreur dans l'éditeur Java. Devrait être un bug dans la version 13.

0
amigobot

J'ai eu un comportement très similaire. L'exécution de tests (Scala-) échouera toujours en raison d'erreurs dans des classes Java non liées au cours de l'étape 'make'.

En fin de compte, j'avais inclus une bibliothèque SDK «globale» qui entrait en conflit avec l'une des dépendances du projet. Un bon message d'erreur utile ne s'est affiché qu'après que j'ai supprimé l'étape de création du test. J'ai ensuite supprimé la bibliothèque dupliquée, rajouté l’étape make au test et tout fonctionne correctement.

0
Nodebody