Java搜索中类文件名必须以.class异常结尾
我希望有人可以帮助我解决特定项目中在Eclipse中使用Java搜索功能的问题。
在一个特定项目上使用Java搜索时,我收到一条错误消息,提示"类文件名必须以.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,关闭和打开该项目似乎已经修复了它(至少现在是这样)。
解决方案
回答
用于修复Eclipse某些特性的另外两种通用机制:
- 关闭并打开项目
- 删除项目(但不要从磁盘!),然后将其重新导入为现有项目
失败的话,bugs.eclipse.org可能会提供答案。
如果工作区缓存了一些损坏的东西,则可以通过在workspace / .metadata / .plugins中浏览来删除它。大多数东西都是相当短暂的(尽管备份并注意删除的首选项)。
回答
直到第二天才出现此错误。尝试从我的输出文件夹中手动删除所有.class文件和资源。没用重新启动我的计算机(WinXP)。没用在Eclipse中关闭了我的项目,然后再次打开了它。工作了!!!希望这可以解决某人的问题。搜索功能对于Eclipse来说确实必不可少。
回答
错误269820的注释#9说明了如何删除搜索索引,这似乎是解决症状严重的损坏索引的解决方案
An internal error occurred during: "Items filtering". Class file name must end with .class
消息框。
如何删除搜索索引:
- 关闭Eclipse
- 删除<workspace> /。metadata / .plugins / org.eclipse.jdt.core / *。index
- 删除<workspace> /。metadata / .plugins / org.eclipse.jdt.core / savedIndexNames.txt
- 再次启动Eclipse
回答
我最近也遇到了这个问题,以下情况对我有用。
- 关闭Eclipse
- 删除
<workspace> /。metadata / .plugins / org.eclipse.jdt.core / *。index
- 删除
<workspace> / .. metadata / .plugins / org.eclipse.jdt.core / savedIndexNames.txt
- 再次启动Eclipse
回答
关闭项目并不能解决我的问题。我从-clean标志开始蚀,由于某种原因,它起作用了。