'Phải ghi đè lỗi Phương thức siêu lớp' sau khi nhập dự án vào Eclipse


1251

Bất cứ khi nào tôi phải nhập lại các dự án của mình vào Eclipse (nếu tôi đã cài đặt lại Eclipse hoặc thay đổi vị trí của các dự án), hầu như tất cả các phương thức bị ghi đè của tôi không được định dạng chính xác, gây ra lỗi:

Phương thức phải ghi đè một phương thức siêu lớp

Có thể đáng chú ý khi đề cập đến điều này là với các dự án Android vì bất kỳ lý do gì, các giá trị đối số phương thức không phải lúc nào cũng được điền, vì vậy tôi phải tự nhập chúng theo cách thủ công. Ví dụ:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

    //These arguments have their correct names
    public void onCreateContextMenu(ContextMenu menu, View v, 
                                    ContextMenuInfo menuInfo) {                 
    }

});

ban đầu sẽ được điền như thế này:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

    //This methods arguments were not automatically provided    
    public void onCreateContextMenu(ContextMenu arg1, View arg2,
                                    ContextMenuInfo arg3) {
    }

});

Điều kỳ lạ là, nếu tôi loại bỏ mã của mình và để Eclipse tự động tạo lại phương thức, nó sử dụng cùng tên đối số mà tôi đã có, vì vậy tôi không thực sự biết vấn đề ở đâu, ngoài ra nó sẽ tự động định dạng phương thức cho tôi.

Điều này trở nên khá đau đớn khi phải tự tạo lại thủ công TẤT CẢ các phương thức ghi đè của tôi bằng tay. Nếu bất cứ ai có thể giải thích tại sao điều này xảy ra hoặc làm thế nào để khắc phục nó. Tôi sẽ rất hạnh phúc.

Có lẽ đó là do cách tôi định dạng các phương thức, bên trong một đối số của phương thức khác?


1
Vui lòng kiểm tra mục này, nó giải thích việc sử dụng ghi đè. Tôi tin rằng thực tế này là rất quan trọng đối với tất cả mọi thứ không chỉ đối với tình huống này đặc biệt. stackoverflow.com/questions/94361/
Mạnh

Câu trả lời:


1433

Eclipse đang mặc định cho Java 1.5 và bạn có các lớp thực hiện các phương thức giao diện (trong Java 1.6 có thể được chú thích @Override, nhưng trong Java 1.5 chỉ có thể được áp dụng cho các phương thức ghi đè phương thức siêu lớp).

Chuyển đến các tùy chọn dự án / IDE của bạn và đặt mức trình biên dịch Java thành 1.6 và cũng đảm bảo bạn chọn JRE 1.6 để thực hiện chương trình của bạn từ Eclipse.


35
Dự án của tôi được đặt thành 1.6, vì vậy tôi đã bắn cho các ngôi sao và đặt nó thành 1.5, xây dựng lại, sau đó quay lại 1.6. Điều kỳ diệu này đã giải quyết vấn đề của tôi. Cám ơn đã chỉ tôi hướng đi đúng!
Michael Krauklis

6
có cùng một vấn đề ... đã thử đề xuất được đưa ra trong câu trả lời này nhưng vẫn không thành công. :( :(
aditya_gaur

6
@MichaelKrauklis Tôi 1.6 và tôi đang gặp vấn đề này. Tôi đã đặt thành 1.5 và làm sạch nó và đặt lại 1.6 và làm sạch lại. Vẫn chưa giải quyết. Có ý kiến ​​gì không?
Pacerier

6
Vấn đề tương tự ở đây, trong trường hợp của tôi, tôi đã không cài đặt JDK 1.6, chỉ có bản 1.7 mới nhất, dường như không hoạt động với Android. Cài đặt 1.6 cũ hơn và sau đó làm theo các hướng dẫn này, sẽ hoạt động :)
NoBugs

4
Nó nên được đề cập (như trong các bình luận cho các câu trả lời khác) một bản dựng sạch theo sau là khởi động lại thường được yêu cầu.
gsingh2011

308

Với Eclipse Galileo, bạn đi đến Eclipse -> mục menu Tùy chọn, sau đó chọn Java và Trình biên dịch trong hộp thoại.

Bây giờ nó vẫn có thể hiển thị mức độ tuân thủ trình biên dịch ở mức 1.6, nhưng bạn vẫn thấy vấn đề này. Vì vậy, bây giờ hãy chọn liên kết "Định cấu hình cài đặt cụ thể của dự án ... " và trong đó bạn sẽ thấy dự án được đặt thành 1.5, bây giờ thay đổi thành 1.6. Bạn sẽ cần phải làm điều này cho tất cả các dự án bị ảnh hưởng.

Giao diện trình đơn / hộp thoại byzantine này là điển hình cho thiết kế UI kém của Eclipse.


78

Trong trường hợp điều này xảy ra với bất kỳ ai khác đã thử cả phương pháp alphazero và Paul mà vẫn không hiệu quả.

Đối với tôi, nhật thực bằng cách nào đó 'lưu trữ' các lỗi biên dịch ngay cả sau khi thực hiện Dự án> Làm sạch ...

Tôi đã phải bỏ chọn Project> Build Automatic, sau đó thực hiện Project> Clean và sau đó xây dựng lại.

Ngoài ra, khi nghi ngờ, hãy thử khởi động lại Eclipse . Điều này có thể khắc phục rất nhiều lỗi khó xử, không thể giải thích được.


4
Tôi không chỉ làm vậy mà còn bỏ chọn "Bắt đầu xây dựng tự động" trên hộp thoại Clean. Chỉ sau đó nó làm việc cho tôi.
Wilerson

3
Tôi cũng phải khởi động lại nhật thực, ngay cả sau khi xóa các lỗi.
Dave Cameron

42

Để giải quyết vấn đề này, hãy chuyển đến thuộc tính Dự án của bạn -> Trình biên dịch Java -> Chọn mức độ tuân thủ của trình biên dịch thành 1.6-> Áp dụng.


22

Câu trả lời của Paul đã làm việc cho tôi một phần. Tôi vẫn còn một lỗi. Vì vậy, ngoài ra, tôi cũng phải vào Properties-> Project Facets và ở đó đặt phiên bản Java từ 1.5 đến 1.6.

Có lẽ điều đó giúp.


14

Các bạn trong trường hợp của tôi không có giải pháp nào ở trên có hiệu quả.

Tôi đã phải xóa các tệp trong không gian làm việc của Dự án:

  • .dự án
  • . classpath

Và thư mục:

  • .cài đặt

Sau đó, tôi đã sao chép những cái từ một dự án tương tự đang làm việc trước đây. Điều này quản lý để sửa chữa dự án bị hỏng của tôi.

Tất nhiên không sử dụng phương pháp này trước khi thử các lựa chọn thay thế trước đó!.


14

Nếu không có gì ở trên giúp được, hãy đảm bảo bạn đã chọn " Môi trường thực thi " thích hợp chứ không phải là "JRE thay thế".

Để được tìm thấy dưới:

Dự án -> Xây dựng đường dẫn -> Thư viện

Chọn JRE System Libraryvà nhấp Edit....

Nếu "JRE thay thế ..." được chọn, hãy thay đổi nó thành "Môi trường thực thi" phù hợp như thế nào JavaSE-1.8 (jre1.8.0_60). Không biết tại sao, nhưng điều này sẽ giải quyết nó.


2
Tôi đã chọn một "Môi trường thực thi" rồi nhấn OK và lỗi đã biến mất. Sau đó, tôi quay lại hộp thoại tương tự này và chọn "JRE mặc định không gian làm việc (...)", đó là lựa chọn trước đây của tôi khi tôi gặp lỗi từ Eclipse, sau đó nhấn OK và lỗi không xảy ra?!? Đây phải là một lỗi UI UI hoặc một cái gì đó tương tự (Tôi đang ở trên Eclipse neon 4.6.2)
mljrg

11

Đây là lần thứ hai tôi gặp phải vấn đề này. lần đầu tiên theo khuyến nghị của alphazero, nó đã hoạt động. nhưng trong lần thứ hai tôi đặt thành 1.6, nó không hoạt động giống như 'CACHE' lỗi này sau khi dọn dẹp và xây dựng lại.

Hãy thử tắt 'Build Automatic' như Rollin_s đã nói -> lỗi vẫn còn ở đây!

Vì vậy, tôi đã xóa dự án sự cố (đã được đặt thành 1.6) khỏi Gói Explorer và nhập lại -> nó bắt đầu xây dựng lại và không có lỗi lần này

Hy vọng điều này sẽ giúp ai đó


10

Việc sửa lỗi phải ghi đè một lỗi phương thức siêu lớp không khó, Bạn chỉ cần thay đổi phiên bản nguồn Java thành 1.6 vì có thể sử dụng chú thích Java 1.6 @Override cùng với phương thức giao diện. Để thay đổi phiên bản nguồn thành 1.6, hãy làm theo các bước dưới đây:

  1. Chọn dự án, nhấp chuột phải, thuộc tính
  2. Chọn Trình biên dịch Java và chọn hộp kiểm "Bật cài đặt cụ thể của dự án"
  3. Bây giờ làm cho mức độ tuân thủ Trình biên dịch thành 1.6
  4. Áp dụng các thay đổi

10

Trong trường hợp của tôi, vấn đề này đã xảy ra khi tôi nhập một dự án Maven vào Eclipse. Để giải quyết điều này, tôi đã thêm vào như sau pom.xml:

<properties>
   ...
   <maven.compiler.source>1.8</maven.compiler.source>
   <maven.compiler.target>1.8</maven.compiler.target>
</properties>

Sau đó, trong menu ngữ cảnh của dự án, đi đến "Maven -> Cập nhật dự án ..." và nhấn OK.

Đó là nó. Hi vọng điêu nay co ich.


Cảm ơn, tôi đoán điều này ghi đè lên cấu hình pom cha hoặc cái gì đó. (Tôi quảng cáo vấn đề theo cách khác, không có vấn đề gì từ nhật thực, nhưng trình biên dịch của maven đã ném tôi "phải ghi đè, v.v.")
Asoub

6

Trong trường hợp của tôi, không có giải pháp nào ở trên hoạt động. Tôi phải kiểm tra mã nguồn của mình sang một thư mục khác. Từ nhật thực, chọn Tệp> Chuyển đổi Không gian làm việc> Khác ... rồi nhập mã vào không gian làm việc mới. nó hoạt động sau đó


2

Điều này xảy ra khi dự án maven của bạn sử dụng mức Tuân thủ Trình biên dịch khác nhau và IDE Eclipse sử dụng mức Tuân thủ Trình biên dịch khác nhau. Để khắc phục điều này, chúng ta cần thay đổi mức độ tuân thủ trình biên dịch của dự án Maven thành mức IDE sử dụng.

1) Để xem mức độ tuân thủ trình biên dịch Java trong IDE Eclipse

*) Cửa sổ -> Tùy chọn -> Trình biên dịch -> Mức độ tuân thủ của Trình biên dịch: 1.8 (hoặc 1.7, 1.6 ,, ect)

2) Để thay đổi mức độ tuân thủ trình biên dịch Java của dự án Maven

*) Chuyển đến "Dự án" -> "Thuộc tính" -> Chọn "Trình biên dịch Java" -> Thay đổi mức độ tuân thủ trình biên dịch: 1.8 (hoặc 1.7, 1.6 ,, ect)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.