2011-02-14 59 views
15

我在使用@Override註解實現接口的類時,在eclipse中出現編譯錯誤。@Override編譯錯誤,實現一個接口(eclipse jdk1.6.0_23 linux)

編譯器符合性級別設置爲Java 6.0。

我使用的是最新版本的6.0 jdk。

錯誤: 「類型{類名}的方法{方法名}必須重寫一個超類方法」

相同的代碼正常工作在Mac具有可比性的配置。

public interface ChannelIF { 
... 
    public boolean canSendNarrowcast(); 
    public boolean canSendBroadcast(); 
} 

public class FacebookChannel implements ChannelIF 
{ 
... 
    @Override 
    public boolean canSendNarrowcast() { return true; } 

    @Override 
    public boolean canSendBroadcast() { return true; } 
} 
+0

你得到的完整編譯錯誤是什麼? – Progman 2011-02-14 18:24:22

+12

只是一個猜測。也許您只檢查了工作區編譯器合規性級別(設置爲6),但您的項目將其自己設置爲jdk5。 – 2011-02-14 18:26:42

+0

@Progman - 編輯的問題包括錯誤字符串 – jsoc 2011-02-14 18:43:42

回答

0

聽起來像您的方法簽名不匹配。它們必須相同,包括諸如拋出的檢查異常等。發佈您的代碼!

14

此功能僅在Java 6及更高版本中有效。我看你使用jdk 1.6。那很好。可能的原因:您正在編譯-source 1.5。是這樣嗎?如果是這樣,你可以改爲-source 1.6

3

在eslipse中可以使用不同版本的編譯器。

請參閱eclipse首選項中的配置 - > Java-> Compiler「編譯器符合性級別」。 您必須選擇「1.6」。

0

檢查運行庫, 編譯器設置可能是不同的

右鍵點擊項目名稱,性質,Java構建路徑,庫

看JRE系統庫的版本,更可能它被設置爲1.5或更低。 選擇JRE系統庫,然後單擊刪除 點擊添加庫,選擇JRE系統庫,下一步 接着是被默認的工作區,或

3

我剛剛發現,使用maven,當我需要還修改的pom.xml有編譯器插件。我有我所有的設置適當的規定,但我需要這一個:

<build> 
    <plugins> 
    <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-compiler-plugin</artifactId> 
     <inherited>true</inherited> 
     <configuration> 
      <source>1.6</source> 
      <target>1.6</target> 
     </configuration> 
    </plugin> 
    </plugins> 
</build> 
0

我有同樣的問題了大約一個小時,然後它似乎神祕地自行解決。我希望我知道我做了什麼。我已經開始將工作區設置設置爲1.6,無意中將項目設置設置爲1.5兼容性。我發現這一點,並將項目編譯器設置更改爲1.6,這解決了一些錯誤,但不是接口的@Override問題。以下某些組合固定它:

  1. 將jre從jdk更改爲Eclipse自定義安裝的JRE(或其他人,不是我)。
  2. 在編譯器部分的項目和工作區設置中禁用編譯器部分中的項目特定設置,並且還單擊重置爲默認值。
  3. 退出Eclipse並以管理員身份重新運行它(我將eclipse從.zip而不是從安裝程序複製到Windows上的Program Files;並且我認爲它不能將它的配置文件更改爲該文件夾的子項而不作爲管理員 - 但我可能是錯誤的)。顯然

一個老鄉通過完全卸載解決了這個問題,並重新安裝所有的Java/Eclipse的相關部件:http://p2p.wrox.com/book-beginning-android-application-development/87299-override-errors-despite-1-6-a.html

1

所以,我一直有這個問題,並通過上述解決方案几次跑,看了之後我的Java版本設置爲1.7,而不是使用Maven,所以只需按照@jdowdell的建議退出並重新啓動Eclipse幾次,之後,它似乎可以工作,直到下次我實現其中一個時。我意識到,當我重新啓動Eclipse時,它提示我保存文件,並且我意識到我的界面還沒有保存,所以最初的方法,即被覆蓋的方法在磁盤上不存在。這就是退出並重新啓動Eclipse修復問題的原因。

tl; dr:檢查是否保存了所有文件。

4

我也有面臨的問題,只是解決。 在Project->右鍵 - >屬性 - > Java編譯器中將「編譯器符合性級別」更改爲1.6。