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

在一个特定项目上使用 java 搜索时,我收到一条错误消息: Class file name must end with .class (参见下面的堆栈跟踪)。这似乎并没有发生在所有项目上,只是一个特定的项目上,所以也许我应该尝试重建一些东西?

我已经尝试过了 Project -> Clean...关闭Eclipse,删除所有构建的类文件并重新启动Eclipse,无济于事。

我在谷歌上找到的关于这个问题的唯一参考是 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)

谢谢麦克道尔,关闭和打开该项目似乎已经解决了这个问题(至少现在是这样)。

有帮助吗?

解决方案

两个更通用的机制用于修复 Eclipse 的一些特性:

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

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

如果工作区正在缓存损坏的内容,您可以通过查看来删除它 工作区/.元数据/.插件. 。其中大部分内容都是相当短暂的(尽管备份并监视已删除的首选项)。

其他提示

评论 #9 到 bug 269820 解释了如何删除搜索索引,这似乎是解决索引损坏的问题,其症状是可怕的

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

消息框。

删除搜索索引的方法:

  1. 关闭日食
  2. 删除 <工作空间>/.metadata/.plugins/org.eclipse.jdt.core/*.index
  3. 删除 <工作空间>/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt
  4. 再次启动 Eclipse

前几天遇到这个错误。尝试手动从我的输出文件夹中删除所有 .class 文件和资源。没用。重新启动我的电脑(WinXP)。没用。在 Eclipse 中关闭我的项目并再次打开它。 成功了!!! 希望这能解决某人的问题。搜索功能对于 Eclipse 来说确实至关重要。

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

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

关闭项目对我来说并没有什么用处。我使用 -clean 标志启动 eclipse,并且出于某种原因它起作用了。

只是

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

(Eclipse 3.5 SR2,构建 ID:20100218-1602)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top