遇到一個奇怪的問題:最近在維護一個老項目,添加了一點新功能,結果在本地打包上傳到生產環境,報java.lang.UnsupportedClassVersionError: Bad version number in .class file。java
固然一看到這個錯誤我就知道是由於JDK的版本不一致。我查看開發環境打包的JDK是1.6,而生產環境是JDK 1.5;我就安裝了一個JDK 1.5,從新用1.5打包,打包成功,上傳到生產環境。結果仍是同樣的異常。這我就納悶了:這期間我折騰了好久,把JDK 1.6 卸載了,怕他有影響,結果仍是沒用。eclipse
後來我一想,是否是新添加的代碼在1.5中不兼容,實現接口的方法上也加上了@Override註解(IDE eclipse自動幫助加上的);我把實現接口方法上的註解去掉用JDK 1.6 打包上傳到生產環境,居然正常了!ide
原來JDK 1.6 和 1.6@Override上在有這麼一點細微的差異:在方法的繼承(類的繼承)上使用@Override都是沒問題,但在方法的實現(接口的實現)上使用@Override要在1.6或更高的版本上才能夠。若是沒有使用什麼特別的功能JDK通常仍是向後兼容的。繼承
@Override促使咱們在編譯期發現錯誤,讓咱們明確的知道本身要實現或覆蓋的方法,使代碼更規範。接口