当我实现接口的方法时,Eclipse正在添加@Override注释.Eclipse似乎对此没有任何问题.我们Cruise Control的自动构建过程似乎对此没有任何问题.但是当我从命令行构建时,使用运行javac的ant,我收到此错误:
[javac] C:\path\project\src\com\us\MyClass.java:70: method does not override a method from its superclass
[javac] @Override
[javac] ^
[javac] 1 error
Run Code Online (Sandbox Code Playgroud)
Eclipse在Java 1.6下运行.Cruise Control正在运行Java 1.5.无论我使用哪个版本的Java,我的ant构建都会失败.
Jos*_*non 99
Java 1.6中更改了@Override注释规范.在Java 1.5中,编译器不允许在已实现的接口方法上使用@Override注释,但在1.6中它确实如此.我找到的第一个搜索结果是这里的博客文章..它没有很好的记录,但确实发生了变化.
Eclipse正在添加它,因为您的Eclipse设置为1.6合规性...您应该尝试将您的构建和eclipse环境保留在相同版本的Java上.我不清楚你指定Cruise Control是否运行Java 5是否使用单独的JDK6进行编译.
与上面的1.5 vs 1.6 @Override注释规则分开,记住Eclipse有自己的编译器实现(不是javac),偶尔会有不同的行为.每当在Eclipse中编译某些东西,而不是在Ant或Maven中编译时,您将需要找到一种方法来使两个编译器都满意.

Mar*_*tin 16
我无法解释你所看到的问题,但它似乎与JDK 5不允许接口的已@Override实现方法,仅限于超类中存在的重写方法有关.
JDK 6将允许其中@Override任何一个.
如果您的ant构建失败,它可能会将source参数传递给javac,要求符合JDK 5.
| 归档时间: |
|
| 查看次数: |
38933 次 |
| 最近记录: |