Имя файла класса должно заканчиваться исключением .class в Поиске Java - PullRequest
64 голосов
/ 09 августа 2008

Я надеялся, что кто-нибудь сможет мне помочь с проблемой, с которой я использую функцию поиска 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)

Благодаря Макдауэллу, закрытие и открытие проекта, похоже, исправили его (по крайней мере, на данный момент).

Ответы [ 6 ]

72 голосов
/ 01 мая 2009

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

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

окно сообщения.

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

  1. Закрыть затмение
  2. Удалить /. Метаданные / .plugins / org.eclipse.jdt.core / *. Index
  3. Удалить /. Метаданные / .plugins / org.eclipse.jdt.core / saveIndexNames.txt
  4. Запустите Eclipse снова
62 голосов
/ 09 августа 2008

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

  • Закрыть и открыть проект
  • Удалить проект (но не с диска!) И повторно импортировать его как существующий проект

Если это не так, bugs.eclipse.org может дать ответ.

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

7 голосов
/ 20 ноября 2008

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

5 голосов
/ 03 августа 2009

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

  1. Закрыть затмение
  2. Удалить <workspace>/.metadata/.plugins/org.eclipse.jdt.core/*.index
  3. Удалить <workspace>/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt
  4. Запустите Eclipse снова
3 голосов
/ 14 декабря 2009

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

2 голосов
/ 23 марта 2011

Just

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

(Eclipse 3.5 SR2, идентификатор сборки: 20100218-1602)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...