今天我一直在玩Eclipse Juno。来自Helios,这是一个很好的升级。一切正常,除了一个新的编译错误。
我们正在使用java.net框架'Fuse',我们调用以下方法:
ResourceInjector.get().inject(true, this);
Eclipse告诉我们:
The method inject(Object[]) is ambiguous for the type ResourceInjector
以下方法发生冲突:
inject(Object... components);
inject(boolean arg0, Object... arg1);
它在Eclipse Helios中运行良好(使用Java 1.6.0.25),但现在它提供了编译错误,并且不想再运行了。在我们看来,这是Eclipse Juno中的一个错误,如果我们使用Maven进行构建就可以很好地构建...有没有人知道解决这个问题?
答案 0 :(得分:9)
这实际上是Java 5和Java 6中的一个错误。这已在Java 7中修复,Eclipse现在会检查这个“错误”。
有关此处的错误的更多信息: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6886431
在下列情况下应该调用哪种方法?
inject(true);
两者都可以应用,当然,但原始布尔肯定是更好的匹配?不符合Java语言规范(JLS):
解决方法(我们无法更改Fuse本身):
ResourceInjector.get().inject(true, new Object[] {this});
答案 1 :(得分:2)
已针对此问题bug 383780提交并修复了错误 以下是修复的文档: https://bugs.eclipse.org/bugs/attachment.cgi?id=218320
基本上,要修复编译器错误,请获取最新的Eclipse Eclipse发布版本(截至目前为4.2.1),在-vmargs
eclipse.ini
之后添加以下行:(那么你可能会需要重新启动eclipse并重建项目)
-DtolerateIllegalAmbiguousVarargsInvocation=true
答案 2 :(得分:0)
如果你改变API
,真的很奇怪inject(boolean arg0,Object ... arg1);
到
inject(Boolean arg0,Object ... arg1);
然后注入(真的,这个)不再含糊不清
我认为错误修复http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6199075绝对是个坏主意