jetty访问jsp页面出现异常:org.apache.jasper.JasperException: PWC6345: A full JDK (not just JRE) is required解决

在Jetty下配置JSP报表页面时遇到'org.apache.jasper.JasperException: PWC6345'异常。解决方法是检查Eclipse的JRE配置,确保选用的是完整JDK而非仅JRE。在'Window -> Preferences -> Java -> Installed JREs'中编辑JRE路径,指向JDK的jre目录,比如C:Program Filesjavajdk1.7的jre子目录,重新启动项目,JSP页面即可正常访问。

今天在jetty下配置一个jsp模版的报表页面,报如下异常信息:

org.apache.jasper.JasperException: PWC6345: There is an error in invoking javac.  A full JDK (not just JRE) is required
    at org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:92)
    at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:378)
    at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:119)
    at org.apache.jasper.compiler.Jsr199JavaCompiler.compile(Jsr199JavaCompiler.java:208)
    at org.apache.jasper.compiler.Compiler.generateClass(Compiler.java:384)
    at org.apache.jasper.compiler.Compiler.compile(Compiler.java:453)
    at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:625)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:492)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:378)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:558)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:489)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:520)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:233)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:972)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:417)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:192)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:906)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
    at org.eclipse.jetty.server.Server.handle(Server.java:350)
    at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:442)
    at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:910)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:565)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:217)
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:46)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:545)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:43)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)
    at java.lang.Thread.run(Unknown Source)


在网上找了很多资料,主要问题还是jetty运行的jre环境配置问题,最终解决方案如下:
在eclipse—>Window—>prefence—>java—>Installed JREs,选择jre点击Edit找到jdk的安装目录,我的安装在C:Program Files/java/jdk1.7在jdk安装目录下找到jre目录,点击finish。,启动项目,访问jsp页面,一切正常。

提醒:网上的解决方案我试了不成功,主要原因就是因为jre配置环境的错误,在选择jre环境的时候,有两个选择,一个是java根目录下的jre(选择这个会不成功),一个是在jdk根目录下的jre(选择这个成功)!!

 

HTTP状态 500 - 内部服务器错误 类型 异常报告 消息 org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.index_jsp 描述 服务器遇到一个意外的情况,阻止它完成请求。 例外情况 org.apache.jasper.JasperException: org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.index_jsp org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:564) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:405) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:356) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:307) javax.servlet.http.HttpServlet.service(HttpServlet.java:623) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 根本原因。 org.apache.jasper.JasperException: java.lang.ClassNotFoundException: org.apache.jsp.index_jsp org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:178) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:356) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:307) javax.servlet.http.HttpServlet.service(HttpServlet.java:623) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) 根本原因。 java.lang.ClassNotFoundException: org.apache.jsp.index_jsp java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:119) org.apache.jasper.servlet.JasperLoader.loadClass(JasperLoader.java:56) org.apache.jasper.servlet.JspServletWrapper.getServlet(JspServletWrapper.java:174) org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393) org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:356) org.apache.jasper.servlet.JspServlet.service(JspServlet.java:307) javax.servlet.http.HttpServlet.service(HttpServlet.java:623) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51) )
最新发布
12-12
HTTP状态码 500 通常表示服务器内部错误,而 `java.lang.ClassNotFoundException : org.apache.jsp.index_jsp` 异常意味着服务器在运行时找不到 `org.apache.jsp.index_jsp` 类。以下是可能的解决办法: ### JSP 文件编译问题 JSP 文件需要被服务器编译成 Java 类才能运行。若编译失败,就会出现 `ClassNotFoundException` 异常。 - **重新部署项目**:有时候,项目部署不完整或部署过程中文件损坏,会导致 JSP 编译失败。尝试在服务器管理界面中,如 Tomcat 的 Manager App,重新部署项目。 - **检查 JSP 文件语法**:JSP 文件中存在语法错误会使编译失败。仔细检查 `index.jsp` 文件,确保没有拼写错误、标签不闭合等问题。 ### 服务器缓存问题 服务器可能会缓存旧的 JSP 编译结果,因此需要清除缓存。 - **清除服务器工作目录**:不同的服务器,其工作目录位置不同。以 Tomcat 为例,工作目录通常是 `$TOMCAT_HOME/work`。删除该目录下的所有文件,然后重启服务器,让服务器重新编译 JSP 文件。 ### 类路径问题 类路径问题可能导致服务器找不到所需的类。 - **检查项目依赖**:确保项目的依赖库中包含了 JSP 编译和运行所需的所有库。例如,Tomcat 需要 `servlet-api.jar`、`jsp-api.jar` 等库。可以在项目的 `WEB-INF/lib` 目录下检查这些库是否存在。 - **检查服务器配置**:确保服务器的类路径配置正确。有时候,服务器的配置文件可能被修改,导致类路径丢失或错误。 ### 代码示例(以 Tomcat 为例) ```bash # 停止 Tomcat 服务器 $TOMCAT_HOME/bin/shutdown.sh # 清除 Tomcat 工作目录 rm -rf $TOMCAT_HOME/work/* # 启动 Tomcat 服务器 $TOMCAT_HOME/bin/startup.sh ``` ### 相关问题 - 如何避免 JSP 文件编译失败的问题? - 除了 Tomcat,其他服务器(如 Jetty)清除缓存的方法有哪些? - 项目依赖库缺失会导致哪些常见的异常? - 服务器类路径配置错误的常见原因有哪些? - 如何快速定位 JSP 文件中的语法错误?
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值