2008-08-09 17 views
64

Tôi đã hy vọng một người nào đó có thể giúp tôi giải quyết vấn đề Tôi đang sử dụng chức năng tìm kiếm java trong Eclipse trên một dự án cụ thể.Tên tệp lớp phải kết thúc bằng ngoại lệ .class trong Java Search

Khi sử dụng tìm kiếm java trên một dự án cụ thể, tôi nhận được thông báo lỗi cho biết Class file name must end with .class (xem dấu vết ngăn xếp bên dưới). Điều này dường như không xảy ra trên tất cả các dự án, chỉ là một dự án cụ thể, vì vậy có lẽ có điều gì đó tôi nên cố gắng xây dựng lại?

Tôi đã thử Project -> Clean ... và Đóng Eclipse, xóa tất cả các tệp lớp được xây dựng và khởi động lại Eclipse để không có kết quả.

Tham chiếu duy nhất tôi có thể tìm thấy trên Google là http://www.crazysquirrel.com/computing/java/eclipse/error-during-java-search.jspx, nhưng tiếc là giải pháp của anh ấy (đóng, xóa tệp lớp, khởi động lại) không hoạt động đối với tôi.

Nếu có ai đó có thể gợi ý điều gì đó để thử, hoặc có thêm thông tin tôi có thể thu thập, điều này có thể giúp theo dõi nó, tôi rất cảm kích các con trỏ.

Version: 3.4.0 
Build id: I20080617-2000 

Cũng chỉ tìm thấy chủ đề này - http://www.myeclipseide.com/PNphpBB2-viewtopic-t-20067.html - mà chỉ ra các vấn đề tương tự có thể xảy ra khi tên dự án chứa một khoảng thời gian. Thật không may, đó không phải là trường hợp trong thiết lập của tôi, vì vậy tôi vẫn còn bị mắc kẹt.

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) 

Cảm ơn McDowell, việc đóng và mở dự án dường như đã sửa nó (ít nhất là bây giờ). hơn

+0

lẽ có một vấn đề với classpath? Dự án của bạn có tham khảo bất kỳ dự án nào khác hoặc có các lớp hoặc lọ bên ngoài mà bạn đang phụ thuộc không? –

Trả lời

62

Hai cơ chế có mục đích chung để sửa chữa một số idiosyncrasies Eclipse:

  • Đóng và mở dự án
  • Xóa dự án (! nhưng không phải từ đĩa) và tái nhập khẩu nó như là một dự án hiện

Nếu không, bugs.eclipse.org có thể cung cấp câu trả lời.

Nếu không gian làm việc đang lưu vào bộ nhớ cache thứ gì đó bị hỏng, bạn có thể xóa nó bằng cách poking xung quanh trong không gian làm việc/.metadata/.plugins. Hầu hết các công cụ đó là khá thoáng qua (mặc dù sao lưu và xem cho các tùy chọn đã xóa).

+2

Đóng và mở dự án đã thực hiện thủ thuật. Cảm ơn bạn! – Peter

+0

đóng và mở cũng làm việc cho tôi, tôi cũng gặp vấn đề tương tự – panschk

+0

Đóng và mở cũng làm việc cho tôi. Trước đây tôi đã thử Project | Làm sạch ... trên toàn bộ không gian làm việc, nhưng điều đó không khắc phục được sự cố. Tôi đang tự hỏi những gì dự án gần & mở không ngoài việc làm sạch dự án đó. –

7

Đã xảy ra lỗi này cho ngày khác. Đã cố xóa tất cả các tệp .class và tài nguyên khỏi thư mục đầu ra của tôi theo cách thủ công. Không làm việc. Khởi động lại máy tính của tôi (WinXP). Không làm việc. Đã đóng dự án của tôi trong Eclipse và mở lại nó. Đã hoạt động !!! Hy vọng điều này giải quyết vấn đề một ai đó ngoài kia. Các cơ sở tìm kiếm và thực sự cần thiết cho Eclipse.

71

Comment #9 to bug 269820 giải thích làm thế nào để xóa các chỉ mục tìm kiếm, mà dường như là giải pháp cho một chỉ số tham nhũng có triệu chứng là sợ hãi

xảy ra lỗi nội bộ trong: "Items lọc".
Tên tệp lớp phải kết thúc bằng .class

hộp thư.

Làm thế nào để xóa các chỉ mục tìm kiếm:

  1. Đóng Eclipse
  2. Xóa <workspace> /.metadata/.plugins/org.eclipse.jdt.core/*.index
  3. Xóa <workspace> /.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt
  4. Khởi động Eclipse lại
+0

Điều này đã giúp tôi khắc phục lỗi khi tìm kiếm (CtrlShiftT) – JodaStephen

+0

Lỗi đánh máy nhỏ 2. Xóa .metadata.plugins \ org.eclipse.jdt.core \ *. Chỉ mục –

+0

Điều này cũng phù hợp với tôi. Hãy tìm nó ở đây: http://u.nu/3aqy3 Nhưng đó là quy trình tương tự. ~ Chris – cimnine

5

Tôi cũng gặp phải vấn đề này gần đây, kịch bản dưới đây làm việc cho tôi.

  1. Đóng Eclipse
  2. Xóa <workspace>/.metadata/.plugins/org.eclipse.jdt.core/*.index
  3. Xóa <workspace>/.metadata/.plugins/org.eclipse.jdt.core/savedIndexNames.txt
  4. Khởi động Eclipse lại
+0

Làm việc cho tôi! Cám ơn! – shrini1000

3

Kết thúc dự án đã không làm các trick cho tôi. Tôi bắt đầu nhật thực với lá cờ -clean và làm việc vì một lý do nào đó.

+0

giải thích tùy chọn sạch: "nếu được đặt thành" true ", mọi dữ liệu được lưu trong bộ nhớ cache được sử dụng bởi khung công tác OSGi và thời gian chạy nhật thực sẽ bị xóa sạch. buộc nhật thực để reinitialize các cache. " –

2

Chỉ

  • Đóng dự án
  • rõ ràng thư mục bằng tay đầu ra (s)
  • mở dự án

(Eclipse 3.5 SR2, Xây dựng id: 20.100.218-1602)