67 votes

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, je vais avoir l'aide de la java fonction de recherche dans Eclipse sur un projet particulier.

Lors de l'utilisation de la java de recherche sur un projet en particulier, je reçois un message d'erreur indiquant Class file name must end with .class (voir la trace de la pile ci-dessous). Cela ne semble pas être le cas sur tous les projets, juste un particulier une seule, alors peut-être il y a quelque chose que je devrais essayer de faire reconstruit?

J'ai déjà essayé, Project -> Clean... et la Fermeture de l'Éclipse, la suppression de tous les construit fichiers de classe et le redémarrage d'Eclipse en vain.

La seule référence que j'ai pu trouver sur Google, le problème est au http://www.crazysquirrel.com/computing/java/eclipse/error-during-java-search.jspxmais malheureusement, sa solution de fermeture, de suppression de fichiers de classe, le redémarrage de l') ne fonctionne pas pour moi.

Si quelqu'un peut suggérer de tenter quelque chose, ou il n'y a plus d'info je peux rassembler ce qui peut aider à suivre il est en bas, je serais grandement apprécier les pointeurs.

Version: 3.4.0
Build id: I20080617-2000

Aussi je viens de trouver ce thread http://www.myeclipseide.com/PNphpBB2-viewtopic-t-20067.html - qui indique le même problème peut se produire lorsque le nom du projet contient une période. Malheureusement, ce n'est pas le cas dans ma configuration, je suis toujours bloqué.

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)

Grâce McDowell, d'ouverture et de clôture du projet semble avoir fixé (au moins pour l'instant).

72voto

Olivier Dagenais Points 605

Commentaire n ° 9 de bug 269820 explique comment supprimer l'index de recherche, ce qui semble être la solution à un indice de corruption dont les symptômes sont le redouté

Une erreur interne s'est produite lors de: "les Éléments de filtrage".
Classe de nom de fichier doit se terminer par .classe

boîte de message.

Comment faire pour supprimer l'index de recherche:

  1. À Proximité De L'Éclipse
  2. Supprimer <espace de travail>/.les métadonnées/.plugins/org.eclipse.jdt.core/*.index
  3. Supprimer <espace de travail>/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt
  4. Début de l'Éclipse à nouveau

62voto

McDowell Points 62645

Deux fins plus générales des mécanismes pour la fixation de certains d'Eclipse, les particularités de:

  • Fermez et ouvrez le projet
  • Supprimer le projet (mais pas à partir du disque!) et de les réimporter comme un projet existant

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

Si l'espace de travail est la mise en cache quelque chose de cassé, vous pourriez être en mesure de le supprimer par farfouillé dans l'espace de travail/.les métadonnées/.les plugins. La plupart de ce genre de choses est assez transitoire (bien que de sauvegarde et de regarder pour supprimer les préférences).

3voto

Rick Points 2597

Fermer les projets ne m'a pas aidé. J'ai commencé eclipse avec le drapeau -clean et cela a fonctionné pour une raison quelconque.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X