解決IDEA中的operator is not allowed for source level below 1.7
阿新 • • 發佈:2018-12-22
<>operator is not allowed for source level below 1.7
不難看出報錯的原因是編譯版本低於1.7時,’<>’這種省略型別的泛型語法不可用。
搜尋該錯誤,得到的答案大約為兩種:
大部分複製貼上的答案都是在eclipse中遇見的該錯誤,解決方案是設定專案的java編譯版本和jdk版本為1.7及以上。檢查了我的idea的相關設定,都是1.8的版本沒問題,該答案沒有解決我的問題;
1.在使用泛型時不要寫省略語法:
Map<String, String> genders = new HashMap<String, String>();
可是這樣等於使用了老版本的java語法,並沒解決根本問題
解決方法:
這裡的問題其實是本地安裝的tomcat中配置的jsp編譯版本是低於1.7的,而設定IDE中的編譯版本並不能解決這個問題,這裡需要找到本地tomcat的安裝目錄下的web.xml檔案,路徑如下:\Tomcat\Tomcat7.0\conf\web.xml,開啟以後找到JspServlet的配置如下:
<servlet> <servlet-name>jsp</servlet-name> <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class> <init-param> <param-name>fork</param-name> <param-value>false</param-value> </init-param> <init-param> <param-name>xpoweredBy</param-name> <param-value>false</param-value> </init-param> <load-on-startup>3</load-on-startup> </servlet>
在其中新增jsp編譯版本的設定:
<init-param> <param-name>compilerSourceVM</param-name> <param-value>1.8</param-value> </init-param> <init-param> <param-name>compilerTargetVM</param-name> <param-value>1.8</param-value> </init-param>
儲存,OK,然後要記得在IDE中重新發布專案(注意清理快取),在訪問原來出問題的jsp頁面,這次就不會報錯了~