1. 程式人生 > >解決IDEA中的operator is not allowed for source level below 1.7

解決IDEA中的operator is not allowed for source level below 1.7

<>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頁面,這次就不會報錯了~