Eclipse neden arabirim yöntemlerinde @Override hakkında şikayet ediyor?


134

Üst sınıf yöntemleri yerine arabirim yöntemlerini @Overridegeçersiz kılan yöntemlerde kullanan mevcut bir proje var . Bunu kodda değiştiremiyorum, ama Eclpse'nin hala Maven ile inşa edebileceğim için ek açıklama hakkında şikayet etmeyi bırakmasını istiyorum.

Bu hatayı devre dışı bırakmaya nasıl giderim?

Not: Proje gereksinimleri nedeniyle Java 1.5 için derlemem gerekiyor.


Ama kaynak Java 6'yı hedefliyor gibi görünüyor?
akarnokd

Aslında. Java 5, mac desteği için geç bir gereklilikti.
Stefan Kendall

Yanıtlar:


268

Bir @Overrideek açıklama, bir arabirim tarafından bildirilenleri uygulayan yöntemlerde kullanmak yalnızca Java 6'dan itibaren geçerlidir. Java 5'te bir hata.

IDE projelerinizin Java 6 JRE kullanacak şekilde ayarlandığından ve "kaynak uyumluluğu" nun 1,6 veya üzerine ayarlandığından emin olun:

  1. Pencere> Tercihler iletişim kutusunu açın
  2. Java> Derleyici'ye göz atın.
  3. Burada, "Derleyici uyum düzeyi" ni 1,6'ya ayarlayın.

Eclipse'in belirli bir proje için bu genel ayarları geçersiz kılabileceğini unutmayın, bu yüzden bunları da kontrol edin.


Güncelleme:

Java 5 altındaki hata sadece Eclipse ile değil; javacdoğrudan komut satırından kullanmak size aynı hatayı verecektir. Geçerli bir Java 5 kaynak kodu değil.

Ancak, Java 6 kaynak kodundan bir Java 5 sürüm sınıfı dosyası oluşturacak olan -target 1.5JDK 6'lara yönelik seçeneği belirtebilirsiniz javac.


Hayır, olmayacak. Bu hata mesajı "javac: kaynak sürümü 1.6 hedef sürümü 1.6 gerektirir" üretecektir.
Michael Borgwardt

9
Hayır, olmayacak. Derlenmiş bir sınıf dosyası üretecektir. Bu hatayı sadece -source 1.6 seçeneğini belirtirseniz verir, bu da bu işi yapmak için gerekli değildir.
erickson

Biliyorsunuz, yine de elle oluşturduğum için, kaynak seviyesini 1.6'da bırakabiliyorum. Herhangi bir karışık yapılandırmayı çalıştıramadım ve bu en basit görünüyor.
Stefan Kendall

@erickson -target -source sürüm düşürmesi de 1.7'den 1.6'ya kadar çalışıyor mu? stackoverflow.com/q/8869869/632951
Pacerier

Bu 1.8 JDK ile çalışmıyor gibi görünüyor. -source 1.6 -target 1.5 diyor ki: javac: kaynak sürümü 1.6 hedef sürümü 1.6 gerektirir
Don Hatch

39

Aşağıdaki gibi yapın:

Proje -> Özellikler -> java derleyici ->

  • Projeye özgü ayarları etkinleştir - 'evet'
  • Derleyici uyumluluğu - 1.6
  • oluşturulan sınıf dosyaları ve kaynak uyumluluğu - 1.5

Teşekkürler - her projenin de kendi ayarları olduğunu fark etmedim
whostolemyhat

2
benim durumumda bu seçeneği devre dışı bırakmam gerekiyordu.
Muten Roshi

12

Projede faset olup olmadığını da kontrol edin. Java sürümü burada geçersiz kılınabilir.


1
Puan! Haklıydın, proje yönüm küresel uyumluluk ayarlarını geçersiz kılıyordu. Teşekkürler!
bpawlowski

9

Projeye özgü ayarlar etkinleştirilebilir. Projenizi seçin Project > Properties > Java Compiler, ya da değişim ve yukarıda karşılık gelen unutmadan . Öyle değil çalışır Örtmek, silme Tutulma projenizi kaldırmak , , dosyaları. ve tutulma. Benim için çalıştıuncheckEnable project specific settingsJdk 1.6JRE
.settings folders.project.classpathclean and build the project, import it back into eclipse and then reset your Java compiler. Clean and build your project


7

Derleyici ayarlarını Java 6 sözdizimini kabul edecek şekilde değiştirebilir, ancak Java 5 çıktısı oluşturabilirim (hatırladığım gibi). Ve çalışma zamanınız için gerekiyorsa "Oluşturulan sınıf dosyaları uyumluluğu" nı biraz daha düşük bir değere ayarlayın. Güncelleme : Eclipse'i kontrol ettim, ancak kaynak uyumluluğunu 1.6 ve sınıf uyumluluğunu 1.5 olarak ayarladığımda şikayet ediyor. 1.6'ya izin verilmiyorsa, genellikle kaynaktaki rahatsız edici @Override ek açıklamalarını manuel olarak yorumlarım (ki bu da sizin durumunuza yardımcı olmaz).

Güncelleme2: Yalnızca manuel derleme yaparsanız, orijinal projeyi yenisine kopyalayan küçük bir program yazabilirsiniz, java kaynaklarından @Override ek açıklamalarını kaldırır ve Eclipse'deki Clean projesine basarsınız.


Herhangi bir ayrıntı verebilir misiniz?
Stefan Kendall

Erickson tarafından belirtilenle aynı sayfadadır.
akarnokd

Proje birkaç GB büyüklüğünde. Basit bir "kopya" bile pratik değildir. : /
Stefan Kendall

Bu durumda, değişiklik izni istemeniz gerekir. Veya 1.5 uyumlu kaynaklar için bir şube oluşturun ve java dosyalarını el ile düzeltin.
akarnokd

1

Ayrıca Java6 sınıflarından Java5 sürümünü oluşturmak için Retroweaver'ı da deneyebilirsiniz.


1

Tüm "@Override" örneklerini aramak ve değiştirmek (kaldırmak) için Eclipse kullanın. Ardından, "Temizle" yi kullanarak arayüz olmayan geçersiz kılmaları geri ekleyin.

Adımlar:

  1. Kaynak dosyalarınızı içeren projeleri veya klasörleri seçin.
  2. Ara iletişim kutusunu açmak için "Ara> Ara ..." (Ctrl-H) seçeneğine gidin.
  3. "Dosya Arama" sekmesine gidin.
  4. "İçeren metin" alanına "Over override" ve "Dosya adı düzenleri" alanına "* .java" girin. Tüm "@Override" örneklerini kaldırmak için "Değiştir ..." i ve ardından "Tamam" ı tıklayın.
  5. "Pencere> Tercihler> Java> Kod Stili> Temizle" ye gidin ve yeni bir profil oluşturun.
  6. Profili düzenleyin ve "Eksik Kod> Eksik Ek Açıklamalar Ekle> @Override" dışındaki her şeyin işaretini kaldırın. "Arayüz yöntemleri uygulamaları" nın işaretli olmadığından emin olun.
  7. Kaynak dosyalarınızı içeren projeleri veya klasörleri seçin.
  8. Arabirim olmayan geçersiz kılmaları geri eklemek için "Kaynak> Temizle ..." (Alt + Üst Karakter + s, sonra u) ve ardından "Son" u seçin.

0

Sorununuzu anladım, jdk'nizi jdk'nizden daha büyük 1.5'e değiştirin


0

IDE projelerinin Java 6 JRE veya daha üstünü kullanacak şekilde yapılandırıldığını belirterek, bazen tutulma hatasını kaldırmaz. Benim için Eclipe IDE'nin yeniden başlatılması yardımcı oldu.


0

Derleyici uyumluluk ayarını Windows sekmesinden 1.6 veya 1.7 olarak değiştirdikten sonra, daha sonra tercihler, sonra java, sonra derleyici ve derleyici uyumluluğunu ayarladıktan sonra hala bu sorunu yaşıyordum. Fikir, proje klasörüne gitmemize, sağ tıklamaya, Java'ya ve derleyici uyumluluğunu 1.6 veya higer'e ayarlamamız gerektiğidir. Bu benim için çalıştı.

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.