>>> ERROR {org.apache.catalina.core.ApplicationDispatcher} - >>> Servlet.service() for servlet bridgeservlet threw exception >>> java.lang.NullPointerException >>> at >>> > org.apache.jasper.JspCompilationContext.getTldResourcePath(JspCompilationContext.java:536) >>> at > org.apache.jasper.compiler.Parser.parseTaglibDirective(Parser.java:410) >>> at org.apache.jasper.compiler.Parser.parseDirective(Parser.java:469) >>> at org.apache.jasper.compiler.Parser.parseElements(Parser.java:1430) >>> at org.apache.jasper.compiler.Parser.parse(Parser.java:139) > > <snip/> > >>>> I can't figure out the reason to get this NullPointerException. >>>> Can someone help me out? > >>> If we knew which version of Tomcat 8 you were using, someone could look >>> at the relevant source code to try to figure out what was going on. > I'm using tomcat version *8.0.20*
>>Browse to the sourcecode of v8.0.20 of tomcat here: >> public TldResourcePath getTldResourcePath(String uri) { >> return getOptions().getTldCache().getTldResourcePath(uri); >> } Thanks for the quick response >> Obviously either getOptions() or getTldCache() is returning null. I debug the code as you suggest and found that getTldCache() is null. In the code As I understand there are 2 point which set the *tldCache* variable one is the setTldCache() method and other is public static TldCache getInstance(ServletContext servletContext) { if (servletContext == null) { throw new IllegalArgumentException(Localizer.getMessage( "org.apache.jasper.compiler.TldCache.servletContextNull")); } return (TldCache) servletContext.getAttribute(SERVLET_CONTEXT_ATTRIBUTE_NAME); } from this 2 methods I couldn't find any point that setTldCache() is been used. So I think getInstance() is the method that is been used. Should I manually set the value o tldCache? Thanks Regards /Thusitha