1. 程式人生 > >關於@override報錯的問題

關於@override報錯的問題

剛進公司,公司讓看CXF,發現有很多annotation的標註,annotation註釋是在jdk1.5加入的新東西,沒用過,所以只能照著寫了。在公司倒也沒出錯,公司的jdk是1.6的,把東西帶回家後,在自己的電腦(jdk1.5)上一跑,報錯了,是@override的錯。
費了半天勁才調好,原因如下:
關於@override註釋在jdk1.5環境下只能用於對繼承的類的方法的重寫,而不能用於對實現的介面中的方法的實現。
例如:
Java程式碼
public interface Interface_A{
public void methodA();
}
public interface Interface_A{
public void methodA();
}
Java程式碼
public class parentClass_B{
public void methodB(){

}
}
public class parentClass_B{
public void methodB(){

}
}
Java程式碼
public class test extends parentClass_B implements Interface_A{
@override //此處在jdk1.5中會報錯,1.6中則不會
public void methodA(){
.............
}

@override //此處不會報錯
public void methodB(){
.............
}
}
public class test extends parentClass_B implements Interface_A{
@override //此處在jdk1.5中會報錯,1.6中則不會
public void methodA(){
.............
}

@override //此處不會報錯
public void methodB(){
.............
}
}
解決辦法有以下:1,在右鍵專案選擇Properties-->java Compiler-->Compiler Compliance Level-->將jdk設定為6.0.。但是有時候這樣還不行,天知道為什麼,
這個時候我是隻能將程式碼中的@Override刪除掉了,不知誰有好的方法

另外有時候會報這種錯誤:Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener 或者bad version number in .class file unable to load class,也是由於專案變數中的jdk版本和Compiler Compliance Level中jdk版本不一致所一致
如果這樣處理還不行的話,那就是你在eclipse裡配置的tomcat的jdk的版本和專案path裡配置的不一致了,通過選單Windows-->Preferences-->tomcat-->jdk-->tomcat JDK home 選擇與專案一直的jdk即可。
有時候可能會出現這種情況,你專案裡的jdk配置的是你自己的jdk6,而你看到tomcat JDK home中也是Myeclipse6.0,主管認為兩個都是java6嘛,應該沒有問題的,但是有時候還是不行,偶就撞上這個黴頭了,剛開始怎麼也找不到問題,這個問題困擾了好幾天