web-dev-qa-db-fra.com

Erreur Eclipse: référencé indirectement à partir des fichiers .class requis?

J'ai une erreur dans Eclipse. Que signifie ce message d'erreur?

The type iglu.ir.TermVector cannot be resolved. It is indirectly referenced from required .class files
168
karikari

Cela signifie: "Une classe que vous utilisez a besoin d'une autre classe qui n'est pas dans le classpath." Comme Harry Joy le suggère, vous devez vous assurer d'ajouter le fichier JAR requis au classpath.

173
Arne Deutsch

C’est aussi probablement une question de confusion pour Eclipse qu’il s’agit d’une erreur réelle. J'ai ignoré l'erreur et lancé le service Web dont elle s'est plaint à endpointInterface, et tout s'est bien déroulé, à l'exception du traitement de la boîte de dialogue à chaque fois que je voulais l'exécuter. Juste une autre erreur opaque qui ne me dit rien.

20
Jerry Miller

Cela m'arrive parfois, j'ai toujours résolu cela avec la commande "mvn Eclipse: clean" pour nettoyer les anciennes propriétés, puis exécuter mvn Eclipse: eclipse -Dwtpversion = 2.0 (pour un projet Web bien sûr). Il y a d'anciennes propriétés sauvegardées, donc Eclipse est parfois confondu.

13
Mário Kapusta

J'ai eu cette erreur à cause d'un référentiel maven local corromp.

Donc, afin de résoudre le problème, tout ce que j'avais à faire était d'aller dans mon référentiel et de supprimer le dossier contenant le fichier .jar concerné, puis de forcer un update maven dans Eclipse.

11
Xavier Portebois

Cela semble être un problème connu (bogue 67414) qui a été résolu dans la version 3.0 ... Quelqu'un a fait remarquer que cela se produisait également dans la version 3.4.

En attendant, la solution consiste à supprimer la bibliothèque système JRE du projet, puis à la rajouter.

Here are the steps:

Accédez aux propriétés du projet avec l'erreur de construction (clic droit> Propriétés)

Affichez l'onglet "Bibliothèques" dans la section "Chemin de construction".

Recherchez la "Bibliothèque système JRE" dans la liste (si cela manque, alors ce message d'erreur n'est pas un bogue Eclipse mais un projet mal configuré).

Supprimer la "bibliothèque système JRE"

Appuyez sur "Ajouter une bibliothèque ...", sélectionnez "Bibliothèque système JRE" et ajoutez le JRE approprié au projet (par exemple, "Espace de travail par défaut JRE").

Appuyez sur "Terminer" dans la sélection de la bibliothèque et sur "OK" dans les propriétés du projet, puis attendez la reconstruction du projet.

Espérons que l'erreur sera résolue ...

7
NPKR

Cette erreur se produit lorsque les classes du fichier jar ne suivent pas la même structure que celle du dossier du fichier jar.

par exemple. si votre fichier de classe a le package com.test.exam et que le fichier classes.jar créé à partir de ce fichier de classe a la structure test.exam ... une erreur sera levée. Vous devez corriger la structure du paquet de votre classes.jar, puis l'inclure dans le chemin de compilation ecplipse ...

5
Mayur

J'ai eu cette exception parce qu'Eclipse travaillait dans une version différente de jdk, elle a juste changé pour la version correcte, propre et construite, et a fonctionné!

3
Orlando Valencia

J'ai eu un cas intéressant de ce problème avec Eclipse 4.4.2. Mon projet (P1) a référencé une classe externe (projet P2) avec deux méthodes portant le même nom mais des types d'arguments différents:

public static void setItem(Integer id) …
public static void setItem(Item item) …

Le type Item figurait dans un troisième projet P3, que je ne voulais pas voir visible ici. P1 n'a appelé que la première méthode:

ExternalClass.setItem(Integer.valueOf(12345));

Ainsi, la deuxième méthode, qui utilisait la classe Item, n'a pas été utilisée et il est vrai que P3 n'était pas dans le chemin de classe de compilation - pourquoi le devrait-elle si elle n'est pas utilisée.

Toujours Eclipse m'a dit

The type ...Item cannot be resolved.
It is indirectly referenced from required .class files

Compiler à partir de la ligne de commande n'a pas généré de tels problèmes. Changer le nom de la deuxième méthode (inutilisé ici!) A également résolu le problème dans Eclipse.

3
Renardo

Si vous ne parvenez toujours pas à trouver un problème avec votre configuration, vous pouvez essayer Projet -> Nettoyer et nettoyer tous les projets de l’espace de travail.

EDIT: Désolé, n'a pas vu la suggestion de verbose_mode ... même chose

2
Denis

Ce qui a réglé ça pour moi, c'était right clicking on project > Maven > Update Project

2
Eduardo Dennis

Pour moi, cela se produit lorsque je mets à niveau mon jdk vers la version 1.8.0_60 avec mon ancien jeu de bocaux utilisé depuis longtemps. Si je retombe sur jdk1.7.0_25, tous ces problèmes ont disparu. Cela semble poser un problème de compatibilité entre le JRE et les bibliothèques.

2
Ming Leung

Dans mon cas, j'ai créé un projet et créé ses minSdkVersion=9 et targetSdkVersion=17. J'ai utilisé libs/Android-support-v4.jar généré automatiquement. Je devais aussi utiliser ActionBarActivity avec Android-support-v7-appcomapt.jar. Je viens donc de copier le fichier Android-support-v7-appcompat.jar du dossier Android-sdk/extras/andrid/support/v7/appcompat/libs et de le coller dans le dossier de mon projet libs. Et cela a causé l'erreur ci-dessus. Donc, fondamentalement, je devais mettre le fichier Android-support-v4.jar de Android-sdk/extras/andrid/support/v7/appcompat/libs également dans mon dossier de projet libs. Selon mes connaissances, le fichier v7.jar avait des dépendances sur le fichier v4.jar. Donc, il avait besoin de son propre fichier v4.jar, au lieu de mon projet, le fichier v4.jar créé automatiquement.

1
laaptu

Rapidement et simplement, je l'ai corrigé de cette façon (j'utilise la version ADT: v21.0.0-531062 sous Windows XP édition familiale)

  1. Fichier manifeste ouvert.
  2. Changement du projet existant minSdkVersion sur la même valeur que maxSdkVersion (conseiller: il peut être intéressant de créer un nouveau projet et de voir ce que c'est maxSdkVersion)
  3. Enregistrer le fichier manifeste.
  4. Cliquez avec le bouton droit sur le projet et sélectionnez Construire le projet.
  5. Depuis le menu du haut: Projet - Nettoyer .. - cocher Seulement le projet pertinent, j'ai coché Démarrer une construction immédiatement et Construire uniquement les projets sélectionnés, puis OK.
  6. ouvrez le fichier Java - plus aucune erreur rouge!
  7. Retour à l'étape 1 ci-dessus et modification de Back minSdkVersion à sa valeur d'origine (pour utiliser autant de version Android que possible).

Cela a fonctionné MAIS le problème revient tous les deux ou trois jours. Je fais comme ci-dessus et ça résout et me laisse développer.

1
user3445991

J'ai eu l'erreur quand je viens de changer certains paramètres SVN et rien dans le code. Le simple nettoyage des projets a corrigé l'erreur.

1
user2774465

Puisque vous nous donnez très peu de détails, il est fort probable que ce que vous avez fait, ce qui est une erreur incroyablement facile à commettre, est que, au lieu de vous diriger vers

Build Path > Configure Build Path > Projects

et en ajoutant votre dossier de projet supplémentaire à partir de là, vous êtes allé à la place

Build Path > Configure Build Path > Libraries

et ajouté votre dossier de projet à partir de là.

C'est certainement le cas si votre code est tout à fait correct, mais lors de la réorganisation automatique des importations via le raccourci ctrl+space, au lieu de vos instructions d'importation faisant référence à com.your.additionalproject, toutes vos références renvoient à bin.com.your. .additionalproject.

Remarquez le bac. Cela signifie que vous référez indirectement à votre classe en traitant votre autre structure de dossiers de projet comme une bibliothèque, ce qui permet à votre IDE de faire tout ce qui est en son pouvoir pour trouver la classe exactement binaire à laquelle vous faites référence.

Pour corriger cela, supprimez le dossier des bibliothèques, ajoutez-le plutôt sous l'onglet Projets et réorganisez vos importations. Votre projet devrait bien fonctionner.

0
steelmonkey

Pointez le JRE dans le chemin de génération vers un JDK. Cela a fonctionné pour moi.

Outre la cause déjà suggérée de l'absence d'un fichier de classe, cette erreur peut également indiquer un fichier de classe en double. Eclipse signale cette erreur lorsqu'un fichier de classe du chemin de génération utilise une autre classe comportant plusieurs définitions dans le chemin de construction.

0
MilesHampson

Lorsque j'utilise une nouvelle version d'Eclipse et que j'essaie d'utiliser l'ancien espace de travail que j'avais utilisé avec l'ancienne version d'Eclipse, cette erreur s'est produite.

Voici comment je résous le problème:

Cliquez avec le bouton droit de la souris sur mon projet dans Package Explorer -> Propriétés -> Java Chemin de construction -> Bibliothèques -> Un message d'erreur (signature) apparaît dans la bibliothèque système JRE. Parce que le chemin ne peut pas être trouvé. -> Double-cliquez sur la bibliothèque système JRE -> sélectionnez l'option "JRE par défaut de l'espace de travail" -> Terminer -> OK. -> BUM IT IS TRAVAIL

FYI.

0
oiyio

Dans mon cas, cela résultait de l’ajout d’une nouvelle dépendance à mon fichier pom.xml.

La nouvelle dépendance dépendait d’une ancienne version d’une bibliothèque (2.5). Cette même bibliothèque était requise par une autre bibliothèque de mon pom.xml, mais elle nécessitait la version 3.0.

Pour une raison quelconque, lorsque Maven rencontre ces conflits, il omet simplement la version la plus récente. Dans Eclipse lors de l'affichage de pom.xml, vous pouvez sélectionner l'onglet "hiérarchie des dépendances" en bas pour voir comment les dépendances sont résolues. Vous trouverez ici si la bibliothèque (et donc la classe) en question a été omise pour cette raison.

Dans mon cas, c'était aussi simple que de verrouiller la nouvelle version. Vous pouvez le faire en cliquant avec le bouton droit de la souris sur l'entrée. Il existe une option pour la verrouiller dans le menu contextuel.

0
Chris Staikos