Eclipse'e bir projeyi içe aktardıktan sonra 'Üst Sınıf Yöntemini Geçersiz Kılmalı' Hataları


1250

Projelerimi Eclipse'e yeniden içe aktarmam gerektiğinde (Eclipse'i yeniden yüklediysem veya projelerin konumunu değiştirdiysem), geçersiz kılınan yöntemlerimin neredeyse tamamı doğru şekilde biçimlendirilemez ve hataya neden olur:

Yöntem, bir üst sınıf yöntemini geçersiz kılmalıdır

Bunun ne olursa olsun Android projeleri ile bahsetmek kayda değer olabilir, yöntem bağımsız değişken değerleri her zaman doldurulmaz, bu yüzden bunları kendim manuel olarak doldurmak zorundayım. Örneğin:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

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

});

başlangıçta şu şekilde doldurulur:

list.setOnCreateContextMenuListener(new OnCreateContextMenuListener() {

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

});

Garip şey, eğer kodumu kaldırır ve Eclipse yöntemi otomatik olarak yeniden oluşturursa, zaten sahip olduğum aynı argüman adlarını kullanır, bu yüzden sorunun nerede olduğunu gerçekten bilmiyorum, diğer sonra yöntemi otomatik olarak biçimlendirir ben mi.

Bu, TÜM geçersiz kılınmış yöntemlerimi elle yeniden oluşturmak zorunda kalmak oldukça acı verici. Herkes bunun neden olduğunu veya nasıl düzeltileceğini açıklayabilirse. Çok mutlu olurum.

Belki de başka bir yöntemin bir argümanı içinde olan yöntemleri biçimlendirmemden kaynaklanıyor?


1
Lütfen bu öğeyi kontrol edin, geçersiz kılma kullanımını açıklar. Bu uygulamanın sadece bu durum için değil her şey için çok önemli olduğuna inanıyorum. stackoverflow.com/questions/94361/…
oagostinho

Yanıtlar:


1432

Eclipse varsayılan olarak Java 1.5'tir ve arabirim yöntemlerini uygulayan sınıflarınız vardır (Java 1.6'da ek açıklama eklenebilir @Override, ancak Java 1.5'te yalnızca bir üst sınıf yöntemini geçersiz kılan yöntemlere uygulanabilir).

Proje / IDE tercihlerinize gidin ve Java derleyici düzeyini 1.6 olarak ayarlayın ve ayrıca Eclipse'den programınızı yürütmek için JRE 1.6'yı seçtiğinizden emin olun.


35
Projem 1,6'ya ayarlandı, bu yüzden yıldızlara ateş ettim ve 1,5'e ayarladım, yeniden inşa ettim, sonra 1,6'ya döndüm. Mucizevi bir şekilde bu sorunumu çözdü. Beni doğru yöne yönlendirdiğiniz için teşekkürler!
Michael Krauklis

6
aynı konuya sahip olmak ... bu cevapta verilen öneriyi denedi ama yine de başarılı olamadı. :( :(
aditya_gaur

6
@MichaelKrauklis 1.6 yaşındayım ve bu sorunu yaşıyorum. 1.5'e ayarladım ve temizledim ve 1.6'ya geri döndüm ve tekrar temizledim. Hala çözülmedi. Herhangi bir fikir?
Pacerier

6
Aynı sorun burada, benim durumumda, görünüşe göre Android ile çalışmayan sadece en yeni 1.7 olan JDK 1.6'yı yüklememiştim. Eski
1.6'yı yükledikten

4
(Diğer cevapların yorumlarında olduğu gibi) genellikle temiz bir derleme ve ardından yeniden başlatma gerektiği belirtilmelidir.
gsingh2011

308

İle Eclipse Galileo sonra iletişim kutusunda Java ve Compiler seçin> Tercihler menü öğesi - Eclipse gidin.

Şimdi derleyici uyumluluk düzeyini 1.6 olarak gösterebilir, ancak yine de bu sorunu görüyorsunuz. Şimdi " Projeye Özgü Ayarları Yapılandır ... " bağlantısını seçin ve orada projenin 1.5 olarak ayarlandığını göreceksiniz, şimdi bunu 1.6 olarak değiştirin. Etkilenen tüm projeler için bunu yapmanız gerekir.

Bu bizans menü / diyalog arayüzü Eclipse'nin zayıf kullanıcı arayüzü tasarımına özgüdür.


78

Bu hem alphazero hem de Paul'ün yöntemini deneyen ve hala çalışmayan herkese olur.

Benim için, Tutulma bir Proje> Temizledikten sonra bile derleme hatalarını bir şekilde 'önbelleğe aldı' ...

Proje> Otomatik Olarak Oluştur öğesinin işaretini kaldırmak, ardından bir Proje> Temizlemek ve ardından yeniden oluşturmak zorunda kaldım.

Ayrıca, şüpheye düştüğünüzde, Eclipse'i yeniden başlatmayı deneyin . Bu, birçok garip, açıklanamayan hataları düzeltebilir.


4
Sadece bunu yapmakla kalmadım, aynı zamanda Temizle iletişim kutusundaki "Derlemeyi otomatik olarak başlat" seçeneğinin işaretini kaldırın. Ancak o zaman benim için çalıştı.
Wilerson

3
Hataları sildikten sonra bile tutulmayı da yeniden başlatmak zorunda kaldım.
Dave Cameron

42

Bu sorunu çözmek için, Proje özelliklerinize gidin -> Java derleyici -> 1.6 -> Uygula için derleyici uyumluluk düzeyini seçin.


22

Pavlus'un yanıtı kısmen benim için çalıştı. O zaman hala bir hatayla karşılaştım. Buna ek olarak, Özellikler-> Proje Özellikleri'ne de gitmek zorunda kaldım ve orada Java sürümünü 1.5'ten 1.6'ya ayarladım.

Belki bu yardımcı olur.


14

Benim durumumdaki adamlar yukarıdaki çözümlerin hiçbiri işe yaramadı.

Proje çalışma alanındaki dosyaları silmek zorunda kaldım:

  • .project
  • .classpath

Ve klasör:

  • .settings

Sonra daha önce çalışan benzer bir projeden olanları kopyaladım. Bu benim kırık projemi düzeltmeyi başardı.

Elbette önceki alternatifleri denemeden önce bu yöntemi kullanmayın !.


14

Yukarıdakilerden hiçbiri yardımcı olmazsa , "Alternatif JRE" değil , uygun bir " Yürütme ortamı " seçtiğinizden emin olun .

Şunun altında bulunur:

Proje -> Yol Oluştur -> Kütüphaneler

Öğesini seçin JRE System Libraryve tıklayın Edit....

"Alternatif JRE ..." seçilmişse, bunu "Yürütme Ortamı" gibi değiştirin JavaSE-1.8 (jre1.8.0_60). Neden olduğu hakkında bir fikrim yok, ama bu çözecek.


2
Bir "Yürütme Ortamı" seçtikten sonra Tamam'a bastım ve hata gitti. Sonra aynı iletişim kutusuna geri döndüm ve Eclipse hata alırken önceki seçimim olan "Çalışma alanı varsayılan JRE (...)" seçti, sonra Tamam tuşuna basın ve hata olmadı?!? Bu bir Eclipse UI hatası veya benzeri bir şey olmalı (Eclipse Neon 4.6.2'deyim)
mljrg

11

Bu benim ikinci kez bu problemle karşılaşıyorum. Alfaroze'nin tavsiyesine göre ilk kez çalıştı. ancak ikinci kez 1.6'ya ayarladığımda, temizleyip yeniden oluşturulduktan sonra bu hatayı 'CACHE' gibi çalışmıyor.

Rollin_s'in dediği gibi 'Otomatik Olarak Oluştur' seçeneğini kapatmaya çalışın -> hata hala burada!

Bu yüzden paket projesinden (zaten 1.6 olarak ayarlanmış) problem projesini kaldırdım ve tekrar içe aktardım -> bir yeniden oluşturma başlattı ve bu sefer hata yok

Umarım bu birine yardım eder


10

Düzeltme bir süper sınıf yöntemi hata geçersiz kılınmalıdır zor değil, Java 1.6 @Override ek açıklama arayüz yöntemi ile birlikte kullanılabilir çünkü Java kaynak sürümünü 1.6 olarak değiştirmeniz gerekir. Kaynak sürümü 1.6 olarak değiştirmek için aşağıdaki adımları izleyin:

  1. Proje Seç, Sağ Tıkla, Özellikler
  2. Java Derleyici'yi seçin ve "Projeye özgü ayarları etkinleştir" onay kutusunu işaretleyin
  3. Şimdi Derleyici uyum düzeyini 1,6'ya getirin
  4. Değişiklikleri uygula

10

Benim durumumda bu problem Eclipse'e bir Maven projesi ithal ettiğimde oldu. Bunu çözmek için aşağıdakileri ekledim pom.xml:

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

Ardından projenin içerik menüsünde "Maven -> Projeyi Güncelle ..." ye gidin ve Tamam'a basın.

Bu kadar. Bu yardımcı olur umarım.


Teşekkürler, sanırım bu ebeveyn pom konfigürasyonunu falan geçersiz kılıyor. (Sorunu başka türlü reklam, tutulma sorunu yok, ama
maven'in

6

Benim durumumda, yukarıdaki çözümler işe yaramıyor. Kaynak kodumu başka bir klasöre ödemem gerekiyor. Tutulmadan Dosya> Çalışma Alanlarını Değiştir> Diğer ... seçeneğini seçin ve ardından kodu yeni çalışma alanlarına aktarın. bundan sonra çalışır.


2

Bu, maven projeniz farklı Derleyici Uyum düzeyi kullandığında ve Eclipse IDE farklı Derleyici Uyum düzeyi kullandığında gerçekleşir. Bunu düzeltmek için Maven projesinin Derleyici Uyumluluk seviyesini IDE'nin kullandığı seviyeye değiştirmemiz gerekiyor.

1) Eclipse IDE'de Java Derleyici Uyumluluk düzeyi kullanımlarını görmek için

*) Pencere -> Tercihler -> Derleyici -> Derleyici Uyumluluk seviyesi: 1.8 (veya 1.7, 1.6 ,, vb)

2) Maven projesinin Java Derleyici Uyumluluk seviyesini değiştirmek

*) Git "Proje" -> "Özellikler" -> "Java Derleyici" yi seçin -> Derleyici Uyumluluk seviyesini değiştirin: 1.8 (veya 1.7, 1.6 ,, vb)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.