Jasper无法在/ webapps中找到文件

时间:2016-05-18 19:49:35

标签: jsp tomcat taglib

我试图让开源的JBilling Web应用程序再次使用Tomcat 8,之前已经开始工作了(不知道发生了什么变化)并且我发现当我尝试打开.jsp页面时,Jasper尝试编译它,它会因NullPointerException而失败。 我修改了Jasper以抛出一个更明智的异常并发现它找不到/WEB-INF/struts-tiles.tld,即使该文件存在于Tomcat的$ CATALINA_HOME / webapp / WEB-INF / struts-tiles.tld

我认为除了应用程序自己的目录之外,Tomcat应该在/ webapps中查找所有应用程序的文件? 我做错了什么?

.jsp文件非常简单:

<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>

<tiles:insert definition="userLogin" flush="true" />

NullPointerException堆栈跟踪是:

16-May-2016 22:43:49.087 SEVERE [http-nio-8080-exec-2] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service()for servlet [jsp] with context with path [/ user]抛出异常[无法执行  JSP的编译类具有根本原因

 java.lang.NullPointerException
    at org.apache.jasper.compiler.TldCache.getTaglibXml(TldCache.java:101)
    at org.apache.jasper.compiler.TagLibraryInfoImpl.<init>(TagLibraryInfoImpl.java:179)
    at org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:434)
    at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:492)
    at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1448)
    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:389)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)
    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:343)
    at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:1096)
    at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
    at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:760)
    at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1480)
    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)

我尝试过Tomcat 8.0.30和9.0.0-M4。两者都产生相同的堆栈跟踪。

0 个答案:

没有答案