类文件名必须以Java搜索中的.class异常结尾

时间:2008-08-09 15:40:30

标签: java eclipse search

我希望有人可以帮助我解决我在特定项目中使用Eclipse中的java搜索功能的问题。

在一个特定项目上使用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,关闭并打开该项目似乎已经修复了它(至少目前为止)。

6 个答案:

答案 0 :(得分:72)

评论#9 to bug 269820解释了如何删除搜索索引,这似乎是腐败索引的解决方案,其症状是可怕的

  

在“过滤项目”期间发生内部错误   类文件名必须以.class

结尾

消息框。

如何删除搜索索引:

  1. 关闭Eclipse
  2. 删除< workspace> /。metadata / .plugins / org.eclipse.jdt.core / * .index
  3. 删除< workspace> /。metadata / .plugins / org.eclipse.jdt.core / savedIndexNames.txt
  4. 再次启动Eclipse

答案 1 :(得分:62)

另外两个用于修复Eclipse某些特性的通用机制:

  • 关闭并打开项目
  • 删除项目(但不是从磁盘!)并将其重新导入为现有项目

如果失败,bugs.eclipse.org可能会提供答案。

如果工作区缓存了某些内容,您可以通过在 workspace / .metadata / .plugins 中进行搜索来删除它。大部分内容都是相当短暂的(虽然备份并观察已删除的偏好)。

答案 2 :(得分:7)

前几天出现此错误。尝试手动删除输出文件夹中的所有.class文件和资源。没工作。重新启动我的电脑(WinXP)。没工作。在Eclipse中关闭我的项目并再次打开它。 工作!!! 希望这解决了那里的问题。搜索工具对Eclipse来说真的很重要。

答案 3 :(得分:5)

我最近也遇到过这个问题,下面的场景对我有用。

  1. 关闭Eclipse
  2. 删除<workspace>/.metadata/.plugins/org.eclipse.jdt.core/*.index
  3. 删除<workspace>/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt
  4. 再次启动Eclipse

答案 4 :(得分:3)

关闭这些项目对我来说并没有成功。我开始使用-clean标志进行日食,这有点原因。

答案 5 :(得分:2)

只需

  • 关闭项目
  • 清除手动输出文件夹
  • 打开项目

(Eclipse 3.5 SR2,Build id:20100218-1602)