Имя файла класса должно заканчиваться исключением .class в Java Search

Я надеялся, что кто-то сможет помочь мне с проблемой, с которой я использую функцию поиска java в Eclipse в конкретном проекте.

При использовании java-поиска в одном конкретном проекте появляется сообщение об ошибке Class file name must end with .class (см. ниже трассировку стека). Кажется, что это не происходит во всех проектах, а только в одном, поэтому, возможно, я должен попытаться перестроить?

Я уже пробовал Project -> Clean... и закрываю Eclipse, удаляя все встроенные файлы классов и перезапуска Eclipse безрезультатно.

Единственная ссылка, которую я нашел в Google для этой проблемы, находится в http://www.crazysquirrel.com/computing/java/eclipse/error-during-java-search.jspx, но, к сожалению, его решение (закрытие, удаление файлов классов, перезапуск) не работало для меня.

Если кто-нибудь может предложить что-то попробовать, или там больше информации, которую я могу собрать, что может помочь ее отслеживать, я бы очень признателен за указатели.

Version: 3.4.0
Build id: I20080617-2000

Также найден этот поток - http://www.myeclipseide.com/PNphpBB2-viewtopic-t-20067.html - который указывает, что такая же проблема может возникнуть, когда имя проекта содержит период. К сожалению, это не так в моей настройке, поэтому я все еще застрял.

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)

Спасибо McDowell, закрытие и открытие проекта, похоже, зафиксировали его (по крайней мере пока).

Ответ 1

Два других механизма общего назначения для фиксации некоторых особенностей Eclipse:

  • Закройте и откройте проект
  • Удалите проект (но не с диска!) и reimport как существующий проект

В противном случае bugs.eclipse.org может предоставить ответ.

Если рабочее пространство кэширует что-то сломанное, вы можете удалить его, просунув его в workspace/.metadata/.plugins. Большая часть этого материала довольно кратковременна (хотя резервное копирование и просмотр удаленных настроек).

Ответ 2

Комментарий # 9 к ошибке 269820 объясняет, как удалить индекс поиска, который, как представляется, является решением коррумпированного индекса, чьими симптомами являются страшился

Внутренняя ошибка произошла во время: "Фильтрация элементов".
Имя файла класса должно заканчиваться на .class

.

Как удалить индекс поиска:

  • Закрыть Eclipse
  • Удалить <workspace> /. metadata/.plugins/org.eclipse.jdt.core/*. index
  • Удалить <workspace> /. metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt
  • Запустите Eclipse снова

Ответ 3

Получил эту ошибку на днях. Пробовал вручную удалять все .class файлы и ресурсы из моей выходной папки. Не работает. Перезагрузил мой компьютер (WinXP). Не работает. Закрыл мой проект в Eclipse и снова открыл его. Работает!!!. Надежды на это решают какую-то проблему. Поисковые средства и действительно важны для Eclipse.

Ответ 4

Я также столкнулся с этой проблемой в последнее время, сценарий ниже работал у меня.

  • Закрыть Eclipse
  • Удалить <workspace>/.metadata/.plugins/org.eclipse.jdt.core/*.index
  • Удалить <workspace>/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt
  • Запустите Eclipse снова

Ответ 5

Закрытие проектов не помогло мне. Я запустил eclipse с флагом -clean, и это сработало по какой-то причине.

Ответ 6

Просто

  • Закрыть проект
  • Очистить папку вывода вручную
  • Открыть проект

(Eclipse 3.5 SR2, код сборки: 20100218-1602)