You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tomcat7迁移至Tomcat9时Gradle构建JSP报'<>' operator不支持1.7以下源码错误

报错原因

报错指向的_jspx_imports_classes相关代码是Tomcat Jasper引擎编译JSP时自动生成的代码,并非业务手写代码。报错核心原因是Java编译阶段使用的源码兼容级别低于1.7,而钻石运算符<>是Java 7版本才引入的语法特性,低版本编译规则不识别该语法。

排查解决步骤
  • 检查Gradle全局Java编译级别配置
    打开项目根目录下的build.gradle文件,添加/修正Java兼容版本配置:
    java {
        sourceCompatibility = JavaVersion.VERSION_1_8
        targetCompatibility = JavaVersion.VERSION_1_8
    }
    
    若使用老版本Gradle,也可直接写为:
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
    
  • 配置JSP编译器的源码兼容级别
    JSP由Tomcat的Jasper引擎独立编译,需要单独配置编译参数:
    1. 若使用Gradle Tomcat插件(如com.bmuschko.tomcat)做本地调试,在插件配置块添加如下配置:
    tomcat {
        jasper {
            compilerSourceVM = "1.8"
            compilerTargetVM = "1.8"
        }
    }
    
    1. 若打War包部署到独立Tomcat 9,需要修改Tomcat的conf/web.xml文件,找到JspServlet的配置项,添加两个初始化参数:
    <servlet>
        <servlet-name>jsp</servlet-name>
        <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
        <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>
    </servlet>
    
  • 执行清理构建
    运行./gradlew clean build命令(Windows环境执行gradlew.bat clean build),验证报错是否消失。
  • 可选排查:如仍存在报错,检查全局Gradle配置文件~/.gradle/gradle.properties(Windows路径为C:\Users\<你的用户名>\.gradle\gradle.properties)中是否存在覆盖sourceCompatibility的配置,如有则删除或者修改为1.8版本。

内容的提问来源于stack exchange,提问作者Parag Goel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 06:15:03