首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么javac在@Override注解上失败

为什么javac在@Override注解上失败
EN

Stack Overflow用户
提问于 2010-02-26 00:30:59
回答 6查看 40.2K关注 0票数 55

当我实现接口的方法时,Eclipse会添加@Override注释。Eclipse在这方面似乎没有问题。我们来自Cruise Control的自动化构建过程似乎对此没有问题。但是当我从命令行构建时,在ant运行javac的情况下,我得到了这个错误:

代码语言:javascript
复制
[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

Eclipse在Java1.6下运行。巡航控制运行的是Java 1.5。无论我使用哪个版本的Java,我的ant构建都会失败。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-02-26 00:41:58

@Override注释规范在Java1.6中发生了变化。在Java1.5中,编译器不允许在已实现的接口方法上使用@Override注释,但在1.6中允许。我找到的第一个搜索结果是一个blog post here.。It was not well documented,但它确实改变了。

Eclipse之所以添加它,是因为您的Eclipse是为1.6兼容性设置的。您应该尽量将构建环境和eclipse环境保持在同一版本的Java上。我不清楚您是否指定Cruise Control正在运行Java5,它是否正在使用单独的JDK6进行编译。

与上面1.5vs1.6Eclipse注释规则不同,请记住@Override有自己的编译器实现(而不是javac),并且偶尔会有不同的行为。每当在Eclipse中编译某些东西,而不是Ant或Maven时,您将需要找到一种方法来使两个编译器都满意。

票数 101
EN

Stack Overflow用户

发布于 2010-02-26 00:39:33

用于已实现方法的@Override标记是Java1.6的新特性。在Java1.5中,只有在覆盖基类中的方法时,@Override才是正确的。阅读更多herehere

票数 3
EN

Stack Overflow用户

发布于 2012-09-17 21:11:02

很多人,包括我,都被这件事搞砸了。See here for a bigger SO discussion

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2335655

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档