【Tips】使用自定义标签时遇到org.apache.jasper.JasperException: Unable to compile class for JSP

来源:互联网 发布:excel表格数据透视表 编辑:程序博客网 时间:2024/06/05 02:33

报错信息如下:

一月 25, 2017 9:28:20 下午 org.apache.catalina.core.ApplicationDispatcher invoke严重: Servlet.service() for servlet jsp threw exceptionorg.apache.jasper.JasperException: /WEB-INF/tags/template/loggedOut.tag (line: 4, column: 1) /WEB-INF/jsp/base.jspf (line: 6, column: 8) <%@ page directive cannot be used in a tag fileat org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42)at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:291)at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:97)at org.apache.jasper.compiler.Parser.processIncludeDirective(Parser.java:348)at org.apache.jasper.compiler.Parser.parseIncludeDirective(Parser.java:381)at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:484)at org.apache.jasper.compiler.Parser.parseFileDirectives(Parser.java:1800)at org.apache.jasper.compiler.Parser.parse(Parser.java:142)at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:244)at org.apache.jasper.compiler.ParserController.parseTagFileDirectives(ParserController.java:172)at org.apache.jasper.compiler.TagFileProcessor.parseTagFileDirectives(TagFileProcessor.java:498)at org.apache.jasper.compiler.ImplicitTagLibraryInfo.getTagFile(ImplicitTagLibraryInfo.java:181)at org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1231)at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1473)at org.apache.jasper.compiler.Parser.parse(Parser.java:145)at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:244)at org.apache.jasper.compiler.ParserController.parse(ParserController.java:105)at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:201)at org.apache.jasper.compiler.Compiler.compile(Compiler.java:372)at org.apache.jasper.compiler.Compiler.compile(Compiler.java:349)at org.apache.jasper.compiler.Compiler.compile(Compiler.java:333)at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:600)at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:368)at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:715)at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:460)at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:385)at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:311)at com.wrox.LoginServlet.doGet(LoginServlet.java:53)at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:522)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110)at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785)at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1425)at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:745)一月 25, 2017 9:28:20 下午 org.apache.catalina.core.StandardWrapperValve invoke严重: Servlet.service() for servlet [loginServlet] in context with path [/Code] threw exception [org.apache.jasper.JasperException: Unable to compile class for JSP] with root causeorg.apache.jasper.JasperException: /WEB-INF/tags/template/loggedOut.tag (line: 4, column: 1) /WEB-INF/jsp/base.jspf (line: 6, column: 8) <%@ page directive cannot be used in a tag fileat org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42)at org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:291)at org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:97)at org.apache.jasper.compiler.Parser.processIncludeDirective(Parser.java:348)at org.apache.jasper.compiler.Parser.parseIncludeDirective(Parser.java:381)at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:484)at org.apache.jasper.compiler.Parser.parseFileDirectives(Parser.java:1800)at org.apache.jasper.compiler.Parser.parse(Parser.java:142)at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:244)at org.apache.jasper.compiler.ParserController.parseTagFileDirectives(ParserController.java:172)at org.apache.jasper.compiler.TagFileProcessor.parseTagFileDirectives(TagFileProcessor.java:498)at org.apache.jasper.compiler.ImplicitTagLibraryInfo.getTagFile(ImplicitTagLibraryInfo.java:181)at org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1231)at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1473)at org.apache.jasper.compiler.Parser.parse(Parser.java:145)at org.apache.jasper.compiler.ParserController.doParse(ParserController.java:244)at org.apache.jasper.compiler.ParserController.parse(ParserController.java:105)at org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:201)at org.apache.jasper.compiler.Compiler.compile(Compiler.java:372)at org.apache.jasper.compiler.Compiler.compile(Compiler.java:349)at org.apache.jasper.compiler.Compiler.compile(Compiler.java:333)at org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:600)at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:368)at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:385)at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:329)at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:715)at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:460)at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:385)at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:311)at com.wrox.LoginServlet.doGet(LoginServlet.java:53)at javax.servlet.http.HttpServlet.service(HttpServlet.java:622)at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:230)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:108)at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:522)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:620)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1110)at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:785)at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1425)at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)at java.lang.Thread.run(Thread.java:745)

报错原因:tag文件include一个.jspf文件,而这个jspf文件中存在该项目类的导入语句,因此报错。

解决办法:去掉关于类的导入语句(旧代码更改)

相关文件如下:

1. tag文件:
<%@ tag body-content="scriptless" trimDirectiveWhitespaces="true" %><%@ attribute name="htmlTitle" type="java.lang.String" rtexprvalue="true" required="true" %><%@ attribute name="bodyTitle" type="java.lang.String" rtexprvalue="true" required="true" %><%@ include file="/WEB-INF/jsp/base.jspf"%><template:main htmlTitle="${htmlTitle}" bodyTitle="${bodyTitle}">    <jsp:attribute name="headContent">        <link rel="stylesheet" href="<c:url value="/CSS/login.css" />" />    </jsp:attribute>    <jsp:attribute name="navigationContent" />    <jsp:body>        <jsp:doBody />    </jsp:body></template:main>
2. base.jspf文件:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %><%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %><%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%><%@ taglib prefix="wrox" uri="http://www.wrox.com/jsp/tld/wrox" %><%@ taglib prefix="template" tagdir="/WEB-INF/tags/template" %><%@ page import="com.wrox.*" %>
import这行删掉就运行正常了。


0 0
原创粉丝点击