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


Bất cứ lúc 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), gần như tất cả các phương pháp ghi đè của tôi không được định dạng đúng, gây ra lỗi The method must override a superclass method.

Nó có thể đáng chú ý để đề cập đến điều này là với các dự án Android - vì lý do gì, các giá trị đối số phương pháp không phải lúc nào cũng đông dân cư, vì vậy tôi phải tự điền vào bản thân mình. 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 phổ biến như sau:

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 sẽ 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, sau đó nó tự động định dạng phương thức tôi.

Điều này sẽ trở thành một nỗi đau phải tự tái tạo tất cả các phương pháp 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 để sửa chữa nó .. Tôi sẽ rất hạnh phúc.

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


1127
2017-11-05 03:17


gốc


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ỉ cho tình hình này đặc biệt. stackoverflow.com/questions/94361/… - oagostinho


Các câu trả lời:


Eclipse là 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 bằng @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).

Đi đến dự án của bạn / sở thích IDE và thiết lập mức trình biên dịch Java thành 1.6 và cũng đảm bảo rằng bạn chọn JRE 1.6 để thực thi chương trình của bạn từ Eclipse.


1383
2017-11-05 03:33



Dự án của tôi đã được thiết lập thành 1.6, vì vậy tôi đã quay cho các ngôi sao và đặt nó thành 1.5, được xây dựng lại, sau đó quay lại 1.6. Điều kỳ diệu này đã giải quyết được vấn đề của tôi. Cám ơn đã chỉ tôi hướng đi đúng! - Michael Krauklis
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
@MichaelKrauklis Tôi là 1.6 và tôi đang gặp vấn đề này. Tôi đã thiết lập đến 1,5 và làm sạch nó và thiết lập trở lại 1,6 và làm sạch nó một lần nữa. Vẫn chưa được giải quyết. Ý tưởng nào? - Pacerier
Cùng một vấn đề ở đây, trong trường hợp của tôi, tôi đã không cài đặt JDK 1.6, chỉ có 1.7 mới nhất, mà 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, nên làm việc :) - NoBugs
Nó nên được đề cập (như trong các ý kiến ​​cho các câu trả lời khác) một xây dựng sạch sẽ theo sau là khởi động lại thường được yêu cầu. - gsingh2011


Với Eclipse Galileo bạn vào Eclipse -> mục trình đơn Preferences, sau đó chọn Java và Compiler 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. 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 thiết lập là 1.5, bây giờ thay đổi điều này 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 menu / hộp thoại byzantine này là điển hình của thiết kế giao diện người dùng kém của Eclipse.


301
2017-09-08 03:48





Trong trường hợp điều này xảy ra với bất kỳ ai khác đã thử cả hai phương thức của alphazero và Paul và vẫn không hoạt động.

Đối với tôi, eclipse 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 một dự án> Làm sạch ...

Tôi đã phải bỏ chọn Project> Build Automatically, sau đó thực hiện một 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 được rất nhiều lỗi khó xử, không thể giải thích được.


74
2018-01-26 17:22



Tôi không chỉ có vậy, nhưng không được 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
Tôi đã phải khởi động lại nhật thực là tốt, ngay cả sau khi xóa các lỗi. - Dave Cameron
Tôi đã có cùng một vấn đề với Eclipse Luna và điều này đã sửa nó. - Ted Hopp


Để giải quyết vấn đề này, đi đế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ủ trình biên dịch để 1.6-> Áp dụng.


38
2017-12-26 09:38





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 rồi. Vì vậy, ngoài ra, tôi cũng phải đi đến Properties-> Project Facets và có thiết lập phiên bản Java từ 1,5 đến 1,6.

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


18
2018-02-05 16:25





Guys 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 xóa các tệp trong vùng làm việc của Project:

  • .dự án
  • .classpath

Và thư mục:

  • .settings

Sau đó, tôi sao chép những cái từ một dự án tương tự đang hoạt động trước đó. Đ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 giải pháp thay thế trước.


11
2017-12-28 20:31



trước đó, hãy thử khởi động lại nhật thực. (đã làm cho tôi) - Dileep


Nếu không có điều nào ở trên hữu ích, hãy đảm bảo bạn có đúng "Môi trường thực thi"đã chọn và không phải một "JRE thay thế".

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

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

Chọn JRE System Library và nhấp Edit....

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


9
2017-09-04 21:44



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


Đây là lần thứ hai tôi gặp phải vấn đề này. lần đầu tiên theo khuyến cáo 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 làm sạch và xây dựng lại.

Hãy thử tắt 'Xây dựng Tự động' như Rollin_s đã nói -> lỗi vẫn còn ở đây!

Vì vậy, tôi đã loại bỏ dự án vấn đề (đã được đặt thành 1.6) từ Package Explorer và nhập lại nó -> 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 đó


8
2017-12-14 06:20





Đi đến cửa sổ-> ưu đãi -> Java -> trình biên dịch -> Chọn trình độ tuân thủ trình biên dịch để 1.6 (phiên bản bạn muốn) -> Apply-> ok. bây giờ là công việc của nó.


7
2017-12-08 09:46





Sửa lỗi phải ghi đè lên 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ì chú thích Java 1.6 @Override có thể được sử dụng 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 Java Compiler và chọn hộp kiểm "Enable project specific settings"
  3. Bây giờ làm cho mức tuân thủ Compiler thành 1.6
  4. Áp dụng các thay đổi

7
2018-04-21 06:23





Trong trường hợp của tôi, vấn đề này đã xảy ra khi tôi nhập khẩu một dự án Maven vào Eclipse. Để giải quyết vấn đề này, tôi đã thêm phần sau vào 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, hãy vào "Maven -> Update Project ..." và nhấn OK.

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


4
2018-02-22 18:30



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