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

访问新增JSP页面抛出javax.servlet.ServletException异常求解决方案

SYS_ERR: javax.servlet.ServletException: java.lang.NoSuchMethodError: org.eclipse.jdt.internal.compiler.Compiler.<init>(Lorg/eclipse/jdt/internal/compiler/env/INameEnvironment;Lorg/eclipse/jdt/internal/compiler/IErrorHandlingPolicy;Lorg/eclipse/jdt/internal/compiler/impl/CompilerOptions;Lorg/eclipse/jdt/internal/compiler/ICompilerRequestor;Lorg/eclipse/jdt/internal/compiler/IProblemFactory;)V
 SYS_ERR:   at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:342)
 SYS_ERR:   at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
 SYS_ERR:   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
 SYS_ERR:   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
 SYS_ERR:   at com.adventnet.appmanager.filter.ExtProdIntegFilter.doFilter(ExtProdIntegFilter.java:130)
 SYS_ERR:   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
 SYS_ERR:   at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
 SYS_ERR:   at com.adventnet.appmanager.filter.AAMFilter.doFilter(AAMFilter.java:118)
 SYS_ERR:   at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
 
...
...
 SYS_ERR: Caused by: java.lang.NoSuchMethodError: org.eclipse.jdt.internal.compiler.Compiler.<init>(Lorg/eclipse/jdt/internal/compiler/env/INameEnvironment;Lorg/eclipse/jdt/internal/compiler/IErrorHandlingPolicy;Lorg/eclipse/jdt/internal/compiler/impl/CompilerOptions;Lorg/eclipse/jdt/internal/compiler/ICompilerRequestor;Lorg/eclipse/jdt/internal/compiler/IProblemFactory;)V
 SYS_ERR:   at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:442)
 SYS_ERR:   at org.apache.jasper.compiler.Compiler.compile(Compiler.java:378)
 SYS_ERR:   at org.apache.jasper.compiler.Compiler.compile(Compiler.java:353)
 SYS_ERR:   at org.apache.jasper.compiler.Compiler.compile(Compiler.java:340)
 SYS_ERR:   at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:644)
 SYS_ERR:   at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:358)
 SYS_ERR:   at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
 SYS_ERR:   at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
 SYS_ERR:   ... 46 more
根因说明

该报错属于依赖版本冲突问题,触发在JSP运行时编译阶段:Tomcat内置的Jasper JSP编译组件调用Eclipse JDT Java编译器的指定构造方法时,当前服务类路径下加载的ecj.jar(Eclipse JDT Core核心包)版本与Jasper要求的版本不匹配,不存在对应入参列表的构造方法,因此抛出NoSuchMethodError。

可用解决方案
  • 移除项目内额外引入的ecj依赖:如果你的项目通过Maven/Gradle等包管理工具显式引入了org.eclipse.jdt:org.eclipse.jdt.core或ecj相关依赖,直接排除该依赖即可,Tomcat自身会携带适配版本的JSP编译依赖,无需项目单独提供。
  • 替换为适配版本的ecj包:如果确有需要保留ecj依赖,下载你当前使用的Tomcat版本官方自带的ecj.jar,替换掉项目WEB-INF/lib目录或服务器全局类路径下不匹配的ecj包即可。
  • 调整Tomcat版本适配现有ecj:如果项目必须使用当前版本的ecj包,将Tomcat版本升级或降级到与该ecj版本适配的版本即可解决冲突。
  • 预编译JSP规避:测试场景下可以提前将JSP文件预编译为Servlet Class文件放入项目类路径,跳过运行时JSP编译步骤,也可以临时规避该报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 17:48:08