Eclipse Tycho是一个用于构建Eclipse插件的Maven插件,它引发了一个Eclipse IDE没有的编译错误:不能引用在不同方法中定义的内部类中的非最终变量urlString
[ERROR] Failed to execute goal org.eclipse.tycho:tycho-compiler-plugin:0.19.0:compile (default-compile) on project org.nodeclipse.ui: Compilation failure: Compilation failure:
[ERROR] D:\Workspaces\Nodeclipse-DEV\nodeclipse-1\org.nodeclipse.ui\src\org\nodeclipse\ui\preferences\NodePreferencePage.java:[93]
[ERROR] URL url = new URL(urlString);
[ERROR] ^^^^^^^^^
[ERROR] Cannot refer to a non-final variable urlString inside an inner class defined in a different method
[ERROR] 1 problem (1 error)
修复是微不足道的,只需添加一个最终
。
然而,我想知道为什么使用Tycho编译与Eclipse IDE不同?两者都将Java版本设置为1.6(参见pom. xml)
有关项目设置的详细信息:
但是,我确实在JVM 8上运行,并且我的工作区默认为1.8
我怀疑您是否已将Eclipse配置为针对Java6进行构建。对我来说,当且仅当我将JDK合规级别设置为1.8时,JDT才允许访问闭包中的非最终变量。因此,您显然在Eclipse中使用了错误的编译器设置。
显然,如果您必须手动保持 Eclipse 和第谷设置同步,则很容易出错。因此,建议通过执行环境为两者配置编译器设置:
源代码