Servlet.service() for servlet jsp threw exception org.apache.jasper.JasperException: Unable to comp

本文探讨了在使用Eclipse启动Tomcat时遇到的org.apache.jasper.JasperException异常,主要原因是JDK版本不一致导致的编译问题。文章提供了详细的解决方案,包括调整Eclipse和Tomcat的JDK设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

re: org.apache.jasper.JasperException: Unable to compile class for JSP

严重: Servlet.service() for servlet jsp threw exception 
org.apache.jasper.JasperException: Unable to compile class for JSP: 


Stacktrace: 
at org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:85) 
at org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330) 
at org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:415) 
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:308) 
at org.apache.jasper.compiler.Compiler.compile(Compiler.java:286) 


我也遇到了这样的问题,这样的问题主要是由于你配置的环境变量的原因所造成的我们来看一下造成这种情况的主要原因:

很明显他说:org.apache.jasper.JasperException: Unable to compile class for JSP
意思是不他不能够完成类的编绎,造成他的的原因是我没有正确配置我的vm,在这里我提前说一下我的这个项目在手动启动Tomcat的statup.bat文件的时候是没有任何问题的,出现问题的原因是我用eclipse中的Tomcat启动时出现的,从这里就可以看出确实是我的vm设置的不正确所造成的,经过的查找我发现我在编绎这个项目的时候我用的vm是1.4的(从这里可以查看【Window】->【Preferences】->【Java】->【Compiler】->【JDK Compliance level】->1.4)而在启动eclipse中的tomcat的时候他让tomcat用的vm是eclipse自身带的vm我的eclipse是5.5.1的从这里可以看出他应该是用的1.5的vm(从这里可以查看windows -> preference ->AplicationServers-> tomcat -> JDK-> Tomcate JDK name )因此部题就水落石出了,我们只要么让这两个编绎器相同就可以了。

额外补充一点就是刚才我们费的那老半天的劲就是为了一个目的让他能够用的tools.jar这个工具,困为Tomcat在工作的时候就主要是用这个工具来进行编绎的,所以你如果不用eclipse来启动tomcat的话一定要让tomcat能够找到这个文件,也就是你要在你的环境变量中设置对让你的JAVA_HOME的路径正确。(tool.jar是在你的java的lib目录下的)


解决方式:复制项目,在myEclipse 中重新导入。就编译通过了。。。

具体原因 感觉貌似是上边的原因,但没有得到证实,我的编译JDK是5.0,tomcat用的是jdk1.6的。

想回过头证实下,结果再重新编译原来的项目的时候打开页面居然好使不抱错了。。。好吧。。。记录下。

HTTP状态 500 - 内部服务器错误 类型 异常报告 消息 org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.Page_jsp 描述 服务器遇到一个意外的情况,阻止它完成请求。 例外情况 org.apache.jasper.JasperException: org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.Page_jsp org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:578) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:422) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:377) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:325) jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 根本原因。 org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.Page_jsp org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:194) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:410) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:377) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:325) jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 根本原因。 java.lang.ClassNotFoundException: org.apache.jsp.Page_jsp java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:129) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:58) org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:189) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:410) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:377) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:325) jakarta.servlet.http.HttpServlet.service(HttpServlet.java:658) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) ):注意 主要问题的全部 stack 信息可以在 server logs 里查看 Apache Tomcat/10.1.28
最新发布
06-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值