Hi Violeta Hi,
2015-03-16 15:07 GMT+02:00 Thusitha Thilina Dayaratne <thusit...@wso2.com>: > > >>> 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); > } >>If you can attach a debugger try to see whether the code below is invoked: >>org.apache.jasper.servlet.JasperInitializer.onStartup(Set<Class<?>>, >>ServletContext) { >>..... >> context.setAttribute(TldCache.SERVLET_CONTEXT_ATTRIBUTE_NAME, >> new TldCache(context, scanner.getUriTldResourcePathMap(), >> scanner.getTldResourcePathTaglibXmlMap())); >> >>} I have checked that as well. But that method didn't get hot when I'm debugging the source. what could be the reason? Thanks Regards Thusitha On Mon, Mar 16, 2015 at 6:59 PM, Violeta Georgieva <miles...@gmail.com> wrote: > Hi, > > 2015-03-16 15:07 GMT+02:00 Thusitha Thilina Dayaratne <thusit...@wso2.com > >: > > > > >>> 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); > > } > > > > If you can attach a debugger try to see whether the code below is invoked: > > org.apache.jasper.servlet.JasperInitializer.onStartup(Set<Class<?>>, > ServletContext) { > ..... > context.setAttribute(TldCache.SERVLET_CONTEXT_ATTRIBUTE_NAME, > new TldCache(context, scanner.getUriTldResourcePathMap(), > scanner.getTldResourcePathTaglibXmlMap())); > > } > > > Regards, > Violeta > > > > > 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 > -- Thusitha Dayaratne Software Engineer WSO2 Inc. - lean . enterprise . middleware | wso2.com Mobile +94712756809 Blog alokayasoya.blogspot.com About http://about.me/thusithathilina