'Harus Menggantikan Metode Superclass' Kesalahan setelah mengimpor proyek ke Eclipse

1251

Kapan saja saya harus mengimpor kembali proyek saya ke Eclipse (jika saya menginstal ulang Eclipse, atau mengubah lokasi proyek), hampir semua metode yang saya timpa tidak diformat dengan benar, menyebabkan kesalahan:

Metode ini harus mengganti metode superclass

Mungkin perlu dicatat untuk menyebutkan ini dengan proyek Android untuk alasan apa pun, nilai metode argumen tidak selalu terisi, jadi saya harus secara manual mengisinya sendiri. Contohnya:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

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

});

awalnya akan diisi seperti ini:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

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

});

Yang aneh adalah, jika saya menghapus kode saya, dan Eclipse secara otomatis membuat ulang metode ini, ia menggunakan nama argumen yang sama yang sudah saya miliki, jadi saya tidak benar-benar tahu di mana masalahnya, selain itu ia memformat otomatis metode untuk saya.

Ini menjadi sangat menyakitkan karena harus secara manual menciptakan kembali SEMUA metode saya yang ditimpa dengan tangan. Kalau ada yang bisa menjelaskan mengapa ini terjadi atau bagaimana cara memperbaikinya. Saya akan sangat bahagia.

Mungkin karena cara saya memformat metode, yang ada di dalam argumen metode lain?

Tim H
sumber
1
Silakan periksa item ini, ini menjelaskan penggunaan penggantian. Saya percaya praktik ini sangat penting untuk semuanya, tidak hanya untuk situasi ini pada khususnya. stackoverflow.com/questions/94361/…
oagostinho

Jawaban:

1433

Eclipse secara default ke Java 1.5 dan Anda memiliki kelas yang menerapkan metode antarmuka (yang dalam Java 1.6 dapat dijelaskan dengan @Override , tetapi di Java 1.5 hanya dapat diterapkan pada metode yang menimpa metode superclass).

Buka preferensi proyek / IDE Anda dan atur level Java compiler ke 1.6 dan juga pastikan Anda memilih JRE 1.6 untuk menjalankan program Anda dari Eclipse.

alphazero
sumber
35
Proyek saya diatur ke 1.6, jadi saya menembak untuk bintang-bintang dan mengaturnya menjadi 1,5, dibangun kembali, lalu kembali ke 1,6. Ajaibnya ini menyelesaikan masalah saya. Terima kasih telah mengarahkan saya ke arah yang benar!
Michael Krauklis
6
memiliki masalah yang sama ... mencoba saran yang diberikan dalam jawaban ini tetapi masih belum berhasil. :( :(
aditya_gaur
6
@MichaelKrauklis Saya 1,6 dan saya mengalami masalah ini. Saya telah mengatur ke 1,5 dan membersihkannya dan kembali ke 1,6 dan membersihkannya lagi. Masih belum terselesaikan. Ada ide?
Pacerier
6
Masalah yang sama di sini, dalam kasus saya, saya belum menginstal JDK 1.6, hanya 1.7 terbaru, yang tampaknya tidak bekerja dengan Android. Menginstal 1.6 yang lebih lama dan kemudian mengikuti instruksi ini, akan berhasil :)
NoBugs
4
Ini harus disebutkan (seperti dalam komentar ke jawaban lain) sering kali dibutuhkan build bersih yang diikuti dengan restart.
gsingh2011
308

Dengan Eclipse Galileo Anda pergi ke Eclipse -> item menu Preferences, lalu pilih Java dan Compiler dalam dialog.

Sekarang masih dapat menunjukkan tingkat kepatuhan kompiler pada 1,6, namun Anda masih melihat masalah ini. Jadi sekarang pilih tautan " Konfigurasi Pengaturan Khusus Proyek ... " dan di sana Anda akan melihat proyek diatur ke 1,5, sekarang ubah ini menjadi 1,6. Anda harus melakukan ini untuk semua proyek yang terkena dampak.

Antarmuka menu / dialog Bizantium ini adalah tipikal dari desain UI Eclipse yang buruk.

Paul
sumber
78

Dalam hal ini terjadi pada orang lain yang mencoba metode alphazero dan Paul dan masih tidak berhasil.

Bagi saya, gerhana entah bagaimana 'cache' kesalahan kompilasi bahkan setelah melakukan Proyek> Bersihkan ...

Saya harus menghapus centang Project> Build Automatically, kemudian melakukan Project> Clean, dan kemudian build lagi.

Juga, ketika ragu, coba mulai ulang Eclipse . Ini dapat memperbaiki banyak kesalahan yang aneh dan tidak dapat dijelaskan.

Rollin_s
sumber
4
Saya tidak hanya itu, tetapi tidak dicentang "Mulai membangun secara otomatis" pada dialog Bersihkan. Hanya kemudian itu berhasil untuk saya.
Wilerson
3
Saya harus memulai ulang gerhana juga, bahkan setelah menghapus kesalahan.
Dave Cameron
42

Untuk mengatasi masalah ini, Buka Properti proyek Anda -> Java compiler -> Pilih tingkat kepatuhan kompiler ke 1.6-> Terapkan.

false9striker
sumber
22

Jawaban Paul bekerja sebagian untuk saya. Saya masih punya satu kesalahan. Jadi, selain itu, saya juga harus pergi ke Properties-> Project Facets dan di sana mengatur versi Java dari 1,5 menjadi 1,6.

Mungkin itu membantu.

Ulrich
sumber
14

Guys dalam kasus saya tidak ada solusi di atas yang berfungsi.

Saya harus menghapus file di dalam ruang kerja proyek:

  • .proyek
  • .classpath

Dan foldernya:

  • .pengaturan

Kemudian saya menyalin yang dari proyek serupa yang bekerja sebelumnya. Ini berhasil memperbaiki proyek saya yang rusak.

Tentu saja jangan menggunakan metode ini sebelum mencoba alternatif sebelumnya !.

will824
sumber
14

Jika tidak ada hal di atas yang membantu, pastikan Anda memiliki " Lingkungan eksekusi " yang tepat , dan bukan "JRE Alternatif".

Dapat ditemukan di bawah:

Project -> Build Path -> Libraries

Pilih JRE System Librarydan klikEdit... .

Jika "Alternate JRE ..." dipilih, ubahlah ke "Lingkungan Eksekusi" yang sesuai JavaSE-1.8 (jre1.8.0_60). Tidak tahu mengapa, tetapi ini akan menyelesaikannya.

phil294
sumber
2
Saya memilih "Lingkungan Eksekusi" kemudian menekan OK dan kesalahan itu hilang. Kemudian saya kembali ke dialog yang sama ini, dan memilih "Workspace default JRE (...)", yang merupakan pilihan saya sebelumnya ketika saya mendapatkan kesalahan dari Eclipse, kemudian menekan OK, dan kesalahan itu tidak terjadi?!? Ini pasti bug Eclipse UI atau sesuatu seperti itu (Saya di Eclipse Neon 4.6.2)
mljrg
11

Ini kali kedua saya mengalami masalah ini. pertama kali menurut rekomendasi alphazero itu berhasil. tetapi di kedua kalinya saya mengatur ke 1,6 itu tidak berfungsi seperti 'CACHE' kesalahan ini setelah bersih dan dibangun kembali.

Coba nonaktifkan 'Bangun Otomatis' seperti kata Rollin_s -> kesalahan masih ada di sini!

Jadi saya menghapus proyek masalah (sudah diatur ke 1.6) dari Package Explorer dan mengimpornya lagi -> ia memulai pembangunan kembali dan tidak ada kesalahan saat ini

Semoga ini bisa membantu seseorang

ob.yann
sumber
10

Memperbaiki harus mengganti kesalahan metode kelas super tidak sulit, Anda hanya perlu mengubah versi Java source menjadi 1.6 karena dari Java 1.6 @Override annotation dapat digunakan bersama dengan metode antarmuka. Untuk mengubah versi sumber ke 1.6, ikuti langkah-langkah di bawah ini:

  1. Pilih Project, Klik kanan, Properties
  2. Pilih Java Compiler dan centang kotak "Aktifkan pengaturan spesifik proyek"
  3. Sekarang buat tingkat kepatuhan Compiler ke 1.6
  4. Menerapkan perubahan
Sunil
sumber
10

Dalam kasus saya, masalah ini terjadi ketika saya mengimpor proyek Maven ke Eclipse. Untuk mengatasi ini, saya menambahkan yang berikut ini di pom.xml:

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

Kemudian di menu konteks proyek, buka "Maven -> Perbarui Proyek ...", dan tekan OK.

Itu dia. Semoga ini membantu.

mljrg
sumber
Terima kasih, saya kira ini mengesampingkan konfigurasi pom induk atau sesuatu. (Saya iklankan masalah sebaliknya, tidak ada masalah dari gerhana, tetapi kompiler maven melemparkan saya "harus menimpa dll")
Asoub
6

Dalam kasus saya, tidak ada solusi di atas yang berfungsi. Saya harus checkout kode sumber saya ke folder lain. Dari gerhana pilih File> Ganti ruang kerja> Lainnya ... lalu impor kode ke ruang kerja baru. itu berfungsi setelah itu.

Hắc Huyền Minh
sumber
2

Ini terjadi ketika proyek pakar Anda menggunakan tingkat Compiler Compliance yang berbeda dan Eclipse IDE menggunakan tingkat Compiler Compliance yang berbeda. Untuk memperbaikinya kita perlu mengubah tingkat Compiler Compliance proyek Maven ke tingkat penggunaan IDE.

1) Untuk Melihat tingkat penggunaan Java Compiler Compliance di Eclipse IDE

*) Jendela -> Preferensi -> Penyusun -> Penyusun Tingkat kepatuhan: 1.8 (atau 1.7, 1.6 ,, dll)

2) Untuk Mengubah level Compiler Java Compliance dari proyek Maven

*) Buka "Project" -> "Properties" -> Pilih "Java Compiler" -> Ubah level Compiler Compliance: 1.8 (atau 1.7, 1.6 ,, dll)

HashanR
sumber