有时候在自己电脑上编译通过的 Java 代码,在别人那里却编译不通过,总是 @override 报错,通常的处理方式是将 @override 去掉,但不能从根本上解决问题。据说这是 JDK 的问题,@Override 是 JDK5 就已经有了,但有个小小的 Bug,就是不支持对接口的实现,认为这不是 Override 而 JDK6 修正了这个 Bug,无论是对父类的方法覆盖还是对接口的实现都可以加上 @Override。同时要注意的是 @override 报错的情况不仅发生在通常的代码中,有时如果程序中使用了 AIDL 文件,系统在自动生成 Gen 目录下对应的接口文件时也会因为这个 Bug 而报错导致无法运行。这时我们就需要对当前工作目录或者当前项目的 JDK 版本进行切换。当然,前提是要确保安装了 JDK 1.6 或是更高版本的 JDK。具体切换过程如下:
- 如果切换工作目录的 JDK 版本
依次点击 Windows → Preferences → Java → Compiler → Compiler compliance level 中选择 1.6 或是更高版本的 JDK,刷新工程,重新编译即可。
- 如果切换当前项目的 JDK 版本
选中报错的项目,鼠标右键依次点击 Properties → Java Compiler → Compiler compliance level 中选择 1.6 或是更高版本的 JDK,刷新工程,重新编译即可。