Le nom du fichier de classe doit se terminer par une exception .class dans Java Search

J’espérais que quelqu’un pourrait m’aider avec un problème que j’ai avec la fonction de recherche java dans Eclipse sur un projet particulier.

Lors de l’utilisation de la recherche Java sur un projet particulier, un message d’erreur m’indique que Class file name must end with .class (voir la trace de la stack ci-dessous). Cela ne semble pas se produire sur tous les projets, juste un seul, alors peut-être que je devrais essayer de reconstruire quelque chose?

J’ai déjà essayé Project -> Clean … et Closing Eclipse, en supprimant tous les fichiers de classe construits et en redémarrant Eclipse en vain.

La seule référence que j’ai pu trouver sur Google pour le problème est à l’ adresse http://www.crazysquirrel.com/computing/java/eclipse/error-during-java-search.jspx , mais malheureusement sa solution (clôture, la suppression des fichiers de classe, le redémarrage) ne fonctionnait pas pour moi.

Si quelqu’un peut suggérer quelque chose à essayer, ou s’il y a plus d’informations que je peux rassembler pour aider à les retrouver, j’apprécierais beaucoup les conseils.

 Version: 3.4.0 Build id: I20080617-2000 

Il suffit également de trouver ce fil de discussion – http://www.myeclipseide.com/PNphpBB2-viewtopic-t-20067.html – qui indique que le même problème peut se produire lorsque le nom du projet contient un point. Malheureusement, ce n’est pas le cas dans ma configuration, donc je suis toujours coincé.

 Caused by: java.lang.IllegalArgumentException: Class file name must end with .class at org.eclipse.jdt.internal.core.PackageFragment.getClassFile(PackageFragment.java:182) at org.eclipse.jdt.internal.core.util.HandleFactory.createOpenable(HandleFactory.java:109) at org.eclipse.jdt.internal.core.search.matching.MatchLocator.locateMatches(MatchLocator.java:1177) at org.eclipse.jdt.internal.core.search.JavaSearchParticipant.locateMatches(JavaSearchParticipant.java:94) at org.eclipse.jdt.internal.core.search.BasicSearchEngine.findMatches(BasicSearchEngine.java:223) at org.eclipse.jdt.internal.core.search.BasicSearchEngine.search(BasicSearchEngine.java:506) at org.eclipse.jdt.core.search.SearchEngine.search(SearchEngine.java:551) at org.eclipse.jdt.internal.corext.refactoring.RefactoringSearchEngine.internalSearch(RefactoringSearchEngine.java:142) at org.eclipse.jdt.internal.corext.refactoring.RefactoringSearchEngine.search(RefactoringSearchEngine.java:129) at org.eclipse.jdt.internal.corext.refactoring.rename.RenameTypeProcessor.initializeReferences(RenameTypeProcessor.java:594) at org.eclipse.jdt.internal.corext.refactoring.rename.RenameTypeProcessor.doCheckFinalConditions(RenameTypeProcessor.java:522) at org.eclipse.jdt.internal.corext.refactoring.rename.JavaRenameProcessor.checkFinalConditions(JavaRenameProcessor.java:45) at org.eclipse.ltk.core.refactoring.participants.ProcessorBasedRefactoring.checkFinalConditions(ProcessorBasedRefactoring.java:225) at org.eclipse.ltk.core.refactoring.Refactoring.checkAllConditions(Refactoring.java:160) at org.eclipse.jdt.internal.ui.refactoring.RefactoringExecutionHelper$Operation.run(RefactoringExecutionHelper.java:77) at org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:39) at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:709) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800) at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:4650) at org.eclipse.jdt.internal.ui.actions.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:92) at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121) 

Merci McDowell, fermer et ouvrir le projet semble l’avoir corrigé (du moins pour le moment).

Deux mécanismes plus généraux pour corriger certaines des particularités d’Eclipse:

  • Fermez et ouvrez le projet
  • Supprimez le projet (mais pas du disque!) Et réimportez-le en tant que projet existant

À défaut, bugs.eclipse.org pourrait fournir la réponse.

Si l’espace de travail met en cache un élément endommagé, vous pouvez le supprimer en fouillant dans workspace / .metadata / .plugins . La plupart de ces choses sont assez transitoires (bien que la sauvegarde et la surveillance des préférences supprimées).

Le commentaire n ° 9 du bug 269820 explique comment supprimer l’index de recherche, qui semble être la solution à un index corrompu dont les symptômes sont redoutés.

Une erreur interne s’est produite lors de: “Filtrage des éléments”.
Le nom du fichier de classe doit se terminer par .class

messagerie.

Comment supprimer l’index de recherche:

  1. Fermer Eclipse
  2. Supprimer /. Metadata / .plugins / org.eclipse.jdt.core / *. Index
  3. Supprimer /. Metadata / .plugins / org.eclipse.jdt.core / savedIndexNames.txt
  4. Recommencez Eclipse

J’ai eu cette erreur à l’autre jour. J’ai essayé de supprimer manuellement tous les fichiers et ressources .class de mon dossier de sortie. N’a pas fonctionné Redémarré mon ordinateur (WinXP). N’a pas fonctionné J’ai fermé mon projet dans Eclipse et l’ai rouvert. Travaillé!!! Espère que cela résout le problème de quelqu’un. Les facilités de recherche et vraiment indispensables à Eclipse.

J’ai également rencontré ce problème récemment, le scénario ci-dessous a fonctionné pour moi.

  1. Fermer Eclipse
  2. Supprimer /.metadata/.plugins/org.eclipse.jdt.core/*.index
  3. Supprimer /.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt
  4. Recommencez Eclipse

La fermeture des projets n’a pas fait l’affaire pour moi. J’ai commencé à éclipser avec le drapeau -clean et cela a fonctionné pour une raison quelconque.

Juste

  • Fermer projet
  • Effacer manuellement les dossiers de sortie
  • Projet ouvert

(Eclipse 3.5 SR2, numéro de build: 20100218-1602)