Java: problème de compilation non résolu

Quelles sont les causes possibles d’un problème de compilation “java.lang.Error: Unresolved”?

Information additionnelle:

Je l’ai vu après avoir copié un ensemble de fichiers JAR mis à jour à partir d’une compilation sur les fichiers JAR existants et redémarré l’application. Les fichiers JAR sont créés à l’aide d’un processus de génération Maven.

Je m’attendrais à voir des erreurs LinkageErrors ou ClassNotFound si les interfaces ont changé. L’erreur ci-dessus indique un problème de niveau inférieur.

Une reconstruction et un redéploiement propres ont résolu le problème. Cette erreur pourrait-elle indiquer un fichier JAR corrompu?

(réécrit 2015-07-28)

Le comportement par défaut d’Eclipse lors de la compilation de code avec des erreurs consiste à générer du code d’octet renvoyant l’exception que vous voyez. Ceci est possible car Eclipse utilise son propre compilateur, au lieu de javac du JDK utilisé par Apache Maven. Si vous utilisez Eclipse sur un projet Maven avec lequel vous utilisez également la commande mvn ligne de commande, cela peut arriver.

Le remède est de corriger les erreurs et de recomstackr avant de relancer.

Le paramètre est marqué d’une case rouge dans cette capture d’écran:

Préférences Eclipse sous OS X

essayez de nettoyer le projet eclipse

Vos classes compilées devront peut-être être recompilées à partir de la source avec les nouveaux fichiers JAR.

Essayez de lancer “mvn clean” puis reconstruisez

vous essayez juste de nettoyer maven par commande

 mvn clean 

et après cette commande suivante

 mvn eclipse:clean eclipse:eclipse 

et reconstruisez votre projet ….

J’ai eu cette erreur lorsque j’ai utilisé une configuration de lancement qui avait un chemin de classe non valide. Dans mon cas, j’avais un projet qui utilisait initialement Maven et donc une configuration de lancement comportait un élément de classpath Maven. J’avais plus tard changé le projet pour utiliser Gradle et supprimé le classpath de Maven du classpath du projet, mais la configuration de lancement l’utilisait toujours. J’ai eu cette erreur en essayant de l’exécuter. Le nettoyage et la reconstruction du projet n’ont pas résolu cette erreur. Au lieu de cela, modifiez la configuration de lancement, supprimez l’élément classpath du projet, puis rajoutez le projet aux entrées utilisateur dans le chemin de classe.

J’ai eu cette erreur plusieurs fois et j’ai eu du mal à travailler. Enfin, j’ai supprimé la configuration d’exécution et ajouté à nouveau les entrées par défaut. Cela a fonctionné magnifiquement.

La partie principale est correctement répondu par Thorbjørn Ravn Andersen.

Cette réponse tente d’éclairer la question restante: comment le fichier de classe contenant des erreurs pourrait-il se retrouver dans le pot?

Chaque build (mvn & javac ou eclipse) signale de manière spécifique quand il rencontre une erreur de compilation et refuse de créer un fichier Jar à partir de celui-ci (ou au moins de vous alerter de manière visible). La cause la plus probable de l’envoi silencieux de fichiers de classe avec des erreurs dans un fichier jar est le fonctionnement simultané de Maven et d’Eclipse.

Si Eclipse est ouvert lors de l’exécution d’une version mvn, vous devez désactiver Project > Build Automatically jusqu’à ce que mvn soit terminé.

Assurez-vous d’avoir supprimé les bibliothèques indisponibles (fichiers jar) du chemin de génération