2014-09-26 55 views
0

Eclipse Tycho,一個用於構建Eclipse插件的Maven插件,引發了Eclipse IDE無法編譯的錯誤:無法引用非最終變量urlString在不同的方法Tycho引發了Eclipse IDE錯誤:無法引用非最終變量

[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) 

解決方法是微不足道的限定的內部類的內部,只需添加一個final

但是我想知道爲什麼與Tycho的編譯不同於Eclipse IDE? 兩者都有的Java版本設置爲1.6(見pom.xml

詳細的項目設置:

  • 的.project和的.classpath是committed
  • 的.classpath有JavaSE-1.6,我可以看到,在Eclipse作爲「JRE系統庫[JavaSe-1.6]」文件夾。
  • META-INF/MANIFEST.MF 聲明Bundle-RequiredExecutionEnvironment: JavaSE-1.6

但是我沒有在JVM運行8和我的工作空間默認爲1.8

+0

因此,SO問題的範圍無論如何不會發生顯着變化,因此無需使用EDIT或UPDATE標記編輯。 – oberlies 2014-09-30 09:11:29

回答

2

我懷疑你已經配置Eclipse來構建的Java 6.對於我來說,JDT只有當我將JDK合規性級別設置爲1.8時,才允許訪問閉包中的非最終變量。所以你顯然在Eclipse中有錯誤的編譯器設置。


顯然,如果您必須手動將Eclipse和Tycho設置保持同步,則很容易出錯。因此,建議是通過執行環境配置兩種編譯器設置:

  1. 在所有插件清單中的聲明Bundle-RequiredExecutionEnvironment: JavaSE-1.6。 (PDE不支持配置繼承,所以您不幸必須在每個插件項目中執行此操作。)
  2. 如果您的項目已登記.project文件,請確保所有項目都已啓用項目特定的編譯器設置,並且選項選擇了使用來自Java Build Path上執行環境的合規性。此設置存儲在.settings/org.eclipse.jdt.core.prefs中,因此還需要檢入此文件。如果沒有檢入.project文件,但可以使用m2eclipse導入項目,則可以省略此步驟。
  3. 刪除任何tycho-compiler-pluginsource & target配置和target-platform-configurationexecutionEnvironment配置,如果存在的話。這可以確保來自軟件包清單的執行環境用於確定Tycho中的編譯器設置。 (有關詳細信息,請參見Tycho Execution Environments配置)
+0

我更新了詳細的問題。更改項目屬性只需添加1.6。參數的'.settings \ org.eclipse.jdt.core.prefs'文件。 我想保持tycho覆蓋源和目標配置。是Eclipse的bug,我看到項目使用1.6,但實際上它使用1.8級? – 2014-09-29 12:27:06

+0

https://bugs.eclipse.org/bugs/show_bug.cgi?id=445426 – 2014-09-30 02:39:28

相關問題