Il nome del file di classe deve terminare con l'eccezione .class in Java Search

StackOverflow https://stackoverflow.com/questions/6816

  •  08-06-2019
  •  | 
  •  

Domanda

Speravo che qualcuno potesse aiutarmi con un problema che sto riscontrando utilizzando la funzione di ricerca Java in Eclipse su un particolare progetto.

Quando utilizzo la ricerca Java su un particolare progetto, ricevo un messaggio di errore che dice Class file name must end with .class (vedere l'analisi dello stack di seguito).Questo non sembra accadere su tutti i progetti, solo su uno in particolare, quindi forse c'è qualcosa che dovrei provare a ricostruire?

Ho già provato Project -> Clean...e Chiusura di Eclipse, eliminazione di tutti i file di classe creati e riavvio di Eclipse senza alcun risultato.

L'unico riferimento che sono riuscito a trovare su Google per il problema è all'indirizzo http://www.crazysquirrel.com/computing/java/eclipse/error-during-java-search.jspx, ma sfortunatamente la sua soluzione (chiusura, eliminazione dei file di classe, riavvio) non ha funzionato per me.

Se qualcuno può suggerire qualcosa da provare, o ci sono altre informazioni che posso raccogliere che potrebbero aiutare a rintracciarlo, apprezzerei molto i suggerimenti.

Version: 3.4.0
Build id: I20080617-2000

Inoltre ho appena trovato questo thread - http://www.myeclipseide.com/PNphpBB2-viewtopic-t-20067.html - che indica che lo stesso problema può verificarsi quando il nome del progetto contiene un punto.Sfortunatamente, questo non è il caso della mia configurazione, quindi sono ancora bloccato.

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)

Grazie McDowell, chiudere e aprire il progetto sembra aver risolto il problema (almeno per ora).

È stato utile?

Soluzione

Altri due meccanismi generici per correggere alcune delle idiosincrasie di Eclipse:

  • Chiudi e apri il progetto
  • Elimina il progetto (ma non dal disco!) e reimportalo come progetto esistente

In mancanza di ciò, bugs.eclipse.org potrebbe fornire la risposta.

Se l'area di lavoro sta memorizzando nella cache qualcosa di rotto, potresti essere in grado di eliminarlo frugando spazio di lavoro/.metadata/.plugins.La maggior parte di queste cose sono abbastanza transitorie (anche se fai il backup e controlla le preferenze cancellate).

Altri suggerimenti

Commento #9 al bug 269820 spiega come eliminare l'indice di ricerca, che sembra essere la soluzione a un indice corrotto i cui sintomi sono i temuti

Si è verificato un errore interno durante:"Filtro elementi".
Il nome del file di classe deve terminare con .class

casella dei messaggi.

Come eliminare l'indice di ricerca:

  1. Chiudi Eclissi
  2. Elimina <area di lavoro>/.metadata/.plugins/org.eclipse.jdt.core/*.index
  3. Elimina <workspace>/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt
  4. Avvia nuovamente Eclipse

Ho ricevuto questo errore l'altro giorno.Ho provato a eliminare manualmente tutti i file .class e le risorse dalla mia cartella di output.Non ha funzionato.Ho riavviato il computer (WinXP).Non ha funzionato.Ho chiuso il mio progetto in Eclipse e l'ho riaperto. Lavorato!!! Spero che questo risolva il problema di qualcuno là fuori.Le strutture di ricerca sono davvero essenziali per Eclipse.

Ho riscontrato questo problema anche di recente, lo scenario seguente ha funzionato per me.

  1. Chiudi Eclissi
  2. Eliminare <workspace>/.metadata/.plugins/org.eclipse.jdt.core/*.index
  3. Eliminare <workspace>/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt
  4. Avvia nuovamente Eclipse

Chiudere i progetti non ha funzionato per me.Ho avviato Eclipse con il flag -clean e per qualche motivo ha funzionato.

Appena

  • Chiudi progetto
  • Cancella manualmente le cartelle di output
  • Progetto aperto

(Eclipse 3.5 SR2, ID build:20100218-1602)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top