Le package Maven fonctionne mais la compilation d'Intellij échoue

91

J'ai un projet JDK 1.7 avec une dépendance maven à un jar local dans mon dépôt maven.

Je ne parviens pas à créer le projet à l'aide d'Intellij, avec les erreurs qu'un symbole ne peut pas être trouvé (le symbole est une classe qui importe des packages à partir du fichier jar local)

Mais je peux réussir à construire le projet en utilisant 'mvn package'.

J'ai passé tellement de temps à chercher des solutions, des choses que j'ai déjà faites:

  • Cache invalidé
  • 'mvn clean install' la dépendance du jar local
  • Marqué comme `` autoload snapshots '' dans la configuration maven d'Intellij
  • Maven réimprimé dans Intellij
  • Syncornisé

Cette erreur est survenue à mes deux ou trois reprises auparavant, mais en général, la simple fermeture d'Intellij et / ou l'exécution de «mvn clean install» ont fait l'affaire.

Veuillez aider.

Yarin Miran
la source
1
Votre référentiel maven est-il correctement configuré avec IntelliJ?
Ruchira Gayan Ranaweera
oui c'est le cas, le chemin du référentiel est celui qui est mis à jour lorsque j'utilise 'mvn install'
Yarin Miran
3
Le jar local est un instantané ou une version commerciale de jar? Si le fichier jar est un instantané, vous devez cocher «Toujours mettre à jour les instantanés» dans les paramètres d'intellij Maven pour forcer la mise à jour de l'ide.
F.Geraerts
oui c'est un instantané, j'ai déjà marqué cette option. Mais
quand
1
Dans la partie Compilateur des paramètres, est-ce que la case "Utiliser une version externe" est cochée? Et dans le Use external build, l'option "Rebuild module on dependency change" est également cochée?
F.Geraerts

Réponses:

155

Je sais que c'est tard mais l'exécution mvn idea:idearésout le problème.

Rahul Jha
la source
3
Cela devrait être la réponse acceptée, car elle offre une solution réelle, pas seulement la raison pour laquelle elle échoue. Tous mes updoots!
Warkst
4
mvn idea:idean'a pas été tenu à jour et n'est pas maintenu par jetbrains
Sean
2
J'ai dû relancer mvn install après cela
Fabio F.
1
Après cela, reconstruisez simplement le projet. Merci.
Duc Tran
2
Vous m'avez sauvé du désespoir. Je voudrais t'embrasser
Martin Bamford
29

Essayez de supprimer tous les fichiers .iml et votre POM. Ensuite, copiez et collez à nouveau votre POM dans votre projet, puis rouvrez-le et réimportez-le.

masoodg
la source
13
Essayez peut-être de «tout réimporter» dans la vue Projet Maven, avant de supprimer quoi que ce soit
Zveratko
3
J'ai dû supprimer le .iml aussi, réimporter maven ne l'a pas corrigé.
Daniel de Zwaan
1
@masoodg, merci beaucoup! tu as sauvé ma journée! La simple réimportation n'a pas aidé. Suivez vos instructions et cela fonctionne comme un charme.
tabalin le
Fermeture Intellij, suppression de la *.iml, *.ipret les *.iwsfichiers du répertoire racine du projet, puis la réouverture Intellij il fixe pour moi
theferrit32
16

J'ai découvert que mon fichier .iml et mon pom étaient en conflit et causaient le problème.

Yarin Miran
la source
1
J'ai un problème similaire. J'ai une configuration avec le plugin de date de construction. Ce plugin nécessite la propriété buildDate avec cette valeur "$ {maven.build.timestamp}". IntelliJ a des problèmes avec l'analyse de ce fichier pom et iml n'est pas correctement synchronisé avec pom. Lorsque je commente la propriété, la synchronisation buildDate fonctionne correctement.
chalimartines
9
des conseils pour résoudre ce problème? J'aimerais juste qu'Intellij travaille, il semble que Netbeans exécute n'importe quel projet, quoi qu'il arrive ... c'est un destructeur de productivité complet :( ...
Breno Salgado
1
Je ne sais pas si votre correctif était le même mais j'ai dû quitter et recharger le projet pour forcer IntelliJ à mettre à jour son fichier IML (il ne l'avait pas actualisé à partir de pom.xml car j'avais ajouté de nouvelles dépendances)
SonarJetLens
1
Le «comment» est bien plus utile que le «pourquoi». Veuillez ajouter quelques détails sur la façon dont vous avez résolu ce problème.
João Matos
2
J'ai fermé IntelliJ. Ensuite, j'ai supprimé C:\Users\USERNAME\.IntelliJIdea2017.2\system. Ensuite, j'ai fait un git clean -xdfdans le répertoire source pour supprimer tous les fichiers non versionnés et importé à nouveau le projet. ça fonctionne parfaitement maintenant.
koppor
15

Ajouter quelques astuces supplémentaires car c'est la première chose qui est apparue dans la recherche lorsque j'avais des problèmes similaires (le projet se construit dans mvn, pas dans IntelliJ), au cas où cela pourrait aider quelqu'un d'autre.

Quand j'ai eu cela, c'était une solution différente sur Windows et Mac.

Sur Mac, je suis allé dans ItellijIDEA / Preferences / Build, Execution, Deployment / Build Tools / Maven / Maven Home Directory et l'ai configuré pour utiliser mon Maven installé séparément plutôt que le Maven fourni. Tous les problèmes de construction ont disparu.

Sous Windows, je voyais des exceptions dans le fichier idea.log liées à SSL et mon arborescence de projet n'avait que Java sous la branche Bibliothèques externes. En regardant d'autres sites, il semble qu'IntelliJ utilise son propre JDK privé au lieu de celui du système (même si dans mon cas, j'avais déjà exactement la même version de JDK installée). Mon système JDK a des certificats installés dans le keystore pour le serveur Nexus d'entreprise que le JDK privé IntelliJ n'avait pas, donc des exceptions ont été levées lorsqu'il a essayé d'obtenir des fichiers de Nexus. Pour cela, la solution était de quitter IntelliJ, de définir une variable d'environnement appelée IDEA_JDK pour qu'elle pointe vers le JDK que j'avais déjà installé et qui avait les certificats appropriés et de redémarrer IntelliJ. Tous les problèmes de construction ont disparu.

rrjp
la source
même problème sur Linux avec le dernier IntelliJ 2016.3.5 - d'abord cela a fonctionné, puis après quelques changements de POM, il a été synchronisé, et le simple changement de l'implément Maven a aidé, il se pourrait donc que le simple changement de Maven déclenche une mise à jour dans IntelliJ qui provoque le projet sera à nouveau synchronisé ...
Gregor
15

Maven a ReImporttravaillé pour moi comme ci-dessous ...

entrez la description de l'image ici

Ram Ghadiyaram
la source
5

IDE utilise sa propre copie intégrée de Maven lors des builds. Si maven sur le terminal est différent de l'IDE, vous voulez qu'ils soient identiques.

GOTO (sur un Mac) - IntelliJ Idea -> Préférences -> Build, Execution, Deployment -> Build Tools -> Maven. Définissez le chemin de votre répertoire de base Maven Pour trouver le chemin de Maven que vous utilisez à partir du terminal, tapez commande mvn -versionet qui devrait afficher un tas de détails, y compris le chemin du répertoire. Mettez cela dans le répertoire personnel de Maven .

Pour être sûr, vous pouvez également faire la même chose pour l'emplacement JDK

==== Quelques autres choses qui peuvent causer de tels problèmes ===

Si vous effectuez des builds mvn package ou mvn clean install, alors il doit faire quelque chose avec les caches IDE. Entre autres choses, celui-ci aide généralement avec de telles erreurs ->

Fichier -> Invalider les caches

ARCHE
la source
4

Je sais que je suis assez tard pour cette conversation, mais je voulais juste publier ceci au cas où quelqu'un d'autre rencontrerait ce problème. Une autre raison pour laquelle cela se produit est que vous ne faites pas référence au bon référentiel. Intellij récupère par défaut la version fournie d'un fichier jar au lieu de celle de votre propre référentiel maven. Confirmez que le référentiel connecté est le bon.

Optimiser
la source
Si vous avez installé maven en utilisant homebrew, la configuration correcte du répertoire de base de maven (par exemple) /usr/local/Cellar/maven/3.5.4/libexec résout ce problème
sushilshimpi
3

Dans mon cas, mon iml n'était pas synchronisé, j'ai donc supprimé l'iml pour le module spécifique, puis sous l'option maven, sélectionnez le projet unignore pour recréer iml

Bikas Katwal
la source
3

depuis l'invite de commande, exécutez la commande: mvn idea:ideaet faites un clic droit sur le projet -> dans le menu, réimportez les dépendances

Ram Maddela
la source
1

"symbole introuvable" signifie qu'intellij n'est pas en mesure de résoudre la "dépendance". Ainsi, vous pouvez forcer «Analyse des dépendances» en cliquant sur «Analyser» -> «Analyser les dépendances» puis sélectionner «Étendue de l'analyse»

dgm
la source
1

De nombreux conseils précieux dans les autres réponses ici, je veux juste ajouter la solution qui a fonctionné pour mon problème .

Nous avons récemment commencé à utiliser un référentiel Maven privé et nous le faisons toujours mvn -s settings.xmllors de l'appel de la cmdline Maven. IntelliJ ne connaît bien sûr pas le repo privé, il a donc besoin d'un peu d'aide.

Allez dans Paramètres -> Build, Execution, Deployment -> Build tools -> Maven et remplacez l'option "User Settings file".

entrez la description de l'image ici

Johannes Rudolph
la source
1

J'ai eu le même problème. Aller à:

Fichier -> Structure du projet -> Module . Sélectionnez votre module et sous " Dépendances onglet ", assurez-vous que toutes les dépendances maven sont ajoutées.

Pour vous assurer que vous êtes averti d'un problème similaire dans l'éditeur d'idées: passez de «l'onglet Dépendances» à «Sources» et ajoutez marquer votre src comme source.

Denorm
la source
0

J'ai eu le même problème. J'ai changé la version maven de 3.0.5 à 3.0.4 dans les paramètres Idea et tout fonctionne bien maintenant. Je ne sais pas pourquoi cela m'aide.

Boris Mitioglov
la source
0

J'ai essayé d'invalider le cache, de changer le Maven en version installée et rien n'a fonctionné.

La fermeture et la recréation d'un nouveau projet l'ont résolu.

Anubha
la source
0

J'ai fermé le projet et l'ai réimporté en cliquant sur le pom racine (pas seulement le dossier, mais le fichier pom lui-même).

Togepi
la source
0

J'ai tout essayé sans joie. Cependant, j'ai fait une chose qui l'a finalement fait fonctionner:

Je suis allé à C: \ Users \ .IntellijJIdea2018.2 et je viens de supprimer le dossier entier.

Il supprime tous les paramètres et le cache d'IntelliJ. J'ai dû réimporter mon projet à partir de zéro, mais un simple retrait et réimportation n'avait pas fonctionné auparavant, mais cela l'a finalement fait fonctionner à nouveau.

Emma
la source
0

Si vous utilisez gradle, essayez la commande ci-dessous.Cela a résolu mon problème

gradle cleanIdea idea

Liju John
la source
0

Cette procédure simple prend environ 1 minute sans aucun risc.

  • Fermer IntelliJ
  • Supprimer UNIQUEMENT les fichiers spécifiques d'IntelliJ comme .idea / *, * .iml, .settings, etc. Suggéré supprimait également le POM, mais ce n'est pas nécessaire à mon humble avis.
  • Puis recréez le projet dans IntelliJ en utilisant: Fichier > Nouveau> Projet à partir de sources existantes> suivez les étapes. Soyez conscient de NE PAS importer plusieurs profils ou (mêmes projets).
tm1701
la source
0

Supprimez le dossier .idea et fermez l'EDI

ouvrez à nouveau l'IDE et importez le projet qui fera une nouvelle importation car le dossier .IDEA a été supprimé par nous plus tôt

Vérifiez le module des bibliothèques externes et s'il n'est pas rempli avec les dépendances requises, vérifiez si l'emplacement maven settings.xml est correctement indiqué dans l'EDI

premier post-commentateur
la source
0

Il existe également une possibilité qui n'a pas été mentionnée. Si vous importez une bibliothèque depuiscom.sun.* . Cela causera également ce problème.

Les programmes fonctionnent lorsqu'ils sont exécutés dans ide, car ces classes com.sun.*sont toutes dans le jre/librépertoire, il sera chargé lors de l'exécution. Mais lorsque vous exécutez mvn package, ces bibliothèques ne seront pas accessibles en raison de la restriction d'oracle depuis java 1.6 (ces bibliothèques étaient obsolètes en quelque sorte). Pour résoudre ce problème, vous pouvez ajouter

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <compilerArguments>
                        <verbose />
                        <bootclasspath>C:/Program Files/Java/jdk1.8.0_161/jre/lib/rt.jar</bootclasspath>
                    </compilerArguments>
                </configuration>
            </plugin>
        </plugins>
    </build>

n'oubliez pas de remplacer le chemin cootclasspath par votre propre chemin rt.jar

Vous pouvez rechercher Access restriction: The type XXX is not accessible due to restriction on required libraryplus de détails.

pauvre homme
la source
0

S'il y a des modules erronés configurés, procédez comme suit:

  • Aller à paramètres du projet
  • Aller à modules
  • Supprimer les modules qui ne devraient pas être là
OSGI Java
la source
0
  1. Dans l'onglet maven, cliquez sur + et choisissez pom.xml
  2. Depuis l'onglet maven, cliquez sur télécharger les sources et la documentation
  3. Sur la structure du projet (où vous pouvez afficher les fichiers / répertoires du projet), cliquez avec le bouton droit sur le projet que vous essayez de créer et choisissez Nom du projet du module de construction.
  4. À partir de l'onglet Exécuter - Modifier les configurations avec + ajouter une application et remplir les champs ci-dessous: i. Classe principale - Choisissez manuellement dans l'onglet Projet sélectionnez la classe principale ii. Utilisez le chemin de classe du module - choisissez le nom de l'application iii. Raccourcir la ligne de commande - fichier classpath
  5. Maintenant, lancez simplement l'application.
Jaydeep Bhatia
la source
0

Dans mon cas, le problème était dans une version différente du SDK Project Java. Lorsque je construisais un projet à partir d'un terminal, maven utilisait Java 8, et lorsque je construisais à partir d'IDEA, il utilisait Java 11.

Allez dans Fichier> Structure du projet ... et dans Paramètres du projet, définissez le SDK du projet sur la version dont vous avez besoin.

Roman Kovalchuk
la source
0

Pour moi, le problème était que j'avais sélectionné le compilateur Ajc dans les paramètres du compilateur IntelliJ Java . Une fois que je l'ai changé pour Javac, tout a bien fonctionné.

Redar
la source
0

Pour moi sur Mac, je l'ai résolu en supprimant l'application Intellij Idea de mon ordinateur et en supprimant les fichiers de cache dans ~ / Library / Application Support / JetBrains / IntelliJIdea2020.1 ~ / Library / Caches / JetBrains / IntelliJIdea2020.1

Ensuite, réinstallez-le, ouvrez mon projet et construisez-le avec succès!

Xi Zhao
la source
0

J'ai rencontré le même problème. Je peux exécuter avec succès la mvn clean packagecommande dans le terminal mais ne parviens pas à exécuter ou à construire à partir d'IntellJ. J'ai fait les actions suivantes mais elles ont toutes échoué.

  • Cache invalidé
  • courir mvn clean packageou mvn clean packagedans le terminal
  • Marqué comme `` autoload snapshots '' dans la configuration maven d'Intellij
  • Synchroniser ou réimporter
  • Supprimez tous les fichiers liés à IntellJ comme .idea et réimportez le projet
  • supprimez tous les fichiers de dépendance, puis exécutez mvn clean package
  • Changer de version de Java ou utiliser Java intégré dans IntellJ
  • courir mvn idea:idea
  • Changer de maison Maven
  • marquer le répertoire src comme source dans l'onglet module

La dernière chose que j'ai faite a fonctionné: supprimez les .idea et .iml dans le projet, supprimez tous les fichiers de dépendance, puis supprimez IntellJ de l'ordinateur. Après avoir réinstallé IntellJ, mon projet a été construit avec succès. Je souhaite que je pourrais avoir une meilleure façon de résoudre ce problème.

Adam
la source