title: Class file name must end with .class exception in Java Search
body: <p>I was hoping someone could help me out with a problem I'm having using the java search function in Eclipse on a particular project.</p>
  
  <p>When using the java search on one particular project, I get an error message saying <code>Class file name must end with .class</code> (see stack trace below). This does not seem to be happening on all projects, just one particular one, so perhaps there's something I should try to get rebuilt?</p>
  
  <p>I have already tried <code>Project -&gt; Clean</code>... and Closing Eclipse, deleting all the built class files and restarting Eclipse to no avail.</p>
  
  <p>The only reference I've been able to find on Google for the problem is at <a href="http://www.crazysquirrel.com/computing/java/eclipse/error-during-java-search.jspx" rel="noreferrer">http://www.crazysquirrel.com/computing/java/eclipse/error-during-java-search.jspx</a>, but unfortunately his solution (closing, deleting class files, restarting) did not work for me.</p>
  
  <p>If anyone can suggest something to try, or there's any more info I can gather which might help track it's down, I'd greatly appreciate the pointers.</p>
  
  <pre><code>Version: 3.4.0
  Build id: I20080617-2000
  </code></pre>
  
  <p>Also just found this thread - <a href="http://www.myeclipseide.com/PNphpBB2-viewtopic-t-20067.html" rel="noreferrer">http://www.myeclipseide.com/PNphpBB2-viewtopic-t-20067.html</a> - which indicates the same problem may occur when the project name contains a period. Unfortunately, that's not the case in my setup, so I'm still stuck.</p>
  
  <pre><code>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)
  </code></pre>
  
  <p>Thanks McDowell, closing and opening the project seems to have fixed it (at least for now).</p>