idea javaweb项目 jsp页面报错:''operator is not allowed for source level below 1.7

  • 今天在使用idea做练习时,某个jsp页面报错如下:
    '<>'operator is not allowed for source level below 1.7
    出错代码如下:
    Map genders = new HashMap<>();
    不难看出报错的原因是编译版本低于1.7时,’<>’这种省略类型的泛型语法不可用。
  • 搜索该错误,得到的答案大约为两种:
    1. 大部分复制粘贴的答案都是在eclipse中遇见的该错误,解决方案是设置项目的java编译版本和jdk版本为1.7及以上。检查了我的idea的相关设置,都是1.8的版本没问题,该答案没有解决我的问题;
    2. 在使用泛型时不要写省略语法:
      Map genders = new HashMap();
      可是这样等于使用了老版本的java语法,并没解决根本问题
  • 解决方法:
    这里的问题其实是本地安装的tomcat中配置的jsp编译版本是低于1.7的,而设置IDE中的编译版本并不能解决这个问题,这里需要找到本地tomcat的安装目录下的web.xml文件,路径如下:\Tomcat\Tomcat7.0\conf\web.xml,打开以后找到JspServlet的配置如下:
    <servlet>
        <servlet-name>jspservlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServletservlet-class>
        <init-param>
            <param-name>forkparam-name>
            <param-value>falseparam-value>
        init-param>
        <init-param>
            <param-name>xpoweredByparam-name>
            <param-value>falseparam-value>
        init-param>
        <load-on-startup>3load-on-startup>
    servlet>

在其中添加jsp编译版本的设置:

    <init-param>
        <param-name>compilerSourceVMparam-name>
        <param-value>1.8param-value>
    init-param>
    <init-param>
        <param-name>compilerTargetVMparam-name>
        <param-value>1.8param-value>
    init-param>

保存,OK,然后要记得在IDE中重新发布项目(注意清理缓存),在访问原来出问题的jsp页面,这次就不会报错了~

  • 涉及到的各个工具及版本:
    IntelliJ IDEA 2017.1 x64
    Tomcat 7.0
    jdk1.8.0_65

你可能感兴趣的:(idea,jsp)