在eclipse中開發的項目有個java build path中可以配置的jdk,還有個java compiler中可以配置compiler level,這兩個是有區別的,java compiler level的JDK版本是你在eclipse中開發代碼,給你提示報錯的和將java文件編譯成class文件需要用到的版本;build path中版本號的作用是指明你將來運行的環境。
如果build path的版本低於compiler版本,則會報 Unsupported major.minor version 51.0(高版本的版本號,以jdk7為例)。
網上大部分文章說java compiler level和build path的作用與本人的不同。在他們的說明下,我在eclipse嘗試過將compiler level設置成1.6,build path 設置成1.7,編寫以下程序:
public class Test { public static void main(String[] args) { // TODO Auto-generated method stub long test = 1234_5678_9012_3456L; //jdk7新語法 System.out.println(test); } }
結果程序無法編譯成功,eclipse提示錯誤,強制運行報以下錯誤
Exception in thread "main" java.lang.Error: Unresolved compilation problem: Underscores can only be used with source level 1.7 or greater at Test.main(Test.java:6)
即使將系統的java home設置成jdk7,用java命令跑也是報上述錯誤。
如果將compiler level設置成1.7,build path 設置成1.6,則eclipse不會報編寫錯誤,但是run后,則會報Unsupported major.minor version 51.0錯誤。