Struts2 freemarker问题未声明可丢弃:java.lang.reflect.InvocationTargetException

Struts2 freemarker问题未声明可丢弃:java.lang.reflect.InvocationTargetException,struts2,freemarker,Struts2,Freemarker,我们在web应用程序中面临一个问题,即使用FreeMarker模板文件来构建HTML。一切正常,但在某一点上,freemarker模板自定义文件开始导致以下异常,我们无法确定错误的原因,因为它很少出现,但一旦出现,它将继续出现,直到我们重新部署web应用程序 因此,由于应用程序的重新部署解决了错误,那么原因可能是.ftl文件定义在缓存中被损坏 我们使用template_update_delay=60000延迟每次调用时重新加载模板 我们正在使用freemarker2.3.16.jar 谢谢你的帮

我们在web应用程序中面临一个问题,即使用FreeMarker模板文件来构建HTML。一切正常,但在某一点上,freemarker模板自定义文件开始导致以下异常,我们无法确定错误的原因,因为它很少出现,但一旦出现,它将继续出现,直到我们重新部署web应用程序

因此,由于应用程序的重新部署解决了错误,那么原因可能是.ftl文件定义在缓存中被损坏

我们使用template_update_delay=60000延迟每次调用时重新加载模板

我们正在使用freemarker2.3.16.jar

谢谢你的帮助

Undeclared throwable:java.lang.reflect.InvocationTargetException at 
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at 
java.lang.reflect.Method.invoke(Method.java:601) at 
freemarker.ext.jsp.PageContextFactory.getCurrentPageContext(PageContextFactory.java:54) at 
freemarker.ext.jsp.TagTransformModel.getWriter(TagTransformModel.java:99) at 
freemarker.core.Environment.visit(Environment.java:286) at 
freemarker.core.UnifiedCall.accept(UnifiedCall.java:130) at 
freemarker.core.Environment.visit(Environment.java:210) at 
freemarker.core.IfBlock.accept(IfBlock.java:82) at 
freemarker.core.Environment.visit(Environment.java:210) at 
freemarker.core.MixedContent.accept(MixedContent.java:92) at 
freemarker.core.Environment.visit(Environment.java:210) at 
freemarker.core.IfBlock.accept(IfBlock.java:82) at 
freemarker.core.Environment.visit(Environment.java:210) at 
freemarker.core.IfBlock.accept(IfBlock.java:82) at 
freemarker.core.Environment.visit(Environment.java:210) at 
freemarker.core.MixedContent.accept(MixedContent.java:92) at 
freemarker.core.Environment.visit(Environment.java:210) at 
freemarker.core.Environment.visit(Environment.java:299) at 
freemarker.core.UnifiedCall.accept(UnifiedCall.java:130) at 
freemarker.core.Environment.visit(Environment.java:210) at 
freemarker.core.MixedContent.accept(MixedContent.java:92) at 
freemarker.core.Environment.visit(Environment.java:210) at 
freemarker.core.Environment.process(Environment.java:190) at 
freemarker.template.Template.process(Template.java:237) at 
org.apache.struts2.views.freemarker.FreemarkerResult.doExecute(FreemarkerResult.java:201) at 
org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:186) at 
com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:374) at 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:278) at 
com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:138) at 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at 
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211) at 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) at 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at 
com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:211) at 
com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:98) at 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at 
org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75) at 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at 
org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:90) at 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at 
com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:100) at 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at 
com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:176) at 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at 
org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164) at 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at 
com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:187) at 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at 
com.path.lib.common.interceptor.PathSessionInterceptor.intercept(PathSessionInterceptor.java:72) at 
com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) at 
org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:54) at 
org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:511) at 
org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77) at 
org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter.doFilter(StrutsExecuteFilter.java:88) at 
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:74) at 
com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:129) at 
com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:77) at 
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:74) at 
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter.doFilter(StrutsPrepareFilter.java:82) at 
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:74) at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:256) at 
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:117) at 
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:268) at 
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:95) at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:268) at 
org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100) at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:268) at 
org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:79) at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:268) at 
org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:119) at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:268) at 
org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54) at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:268) at 
org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35) at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:268) at 
org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187) at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:268) at 
org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105) at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:268) at 
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:80) at 
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:268) at 
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:121) at 
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) at 
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) at 
weblogic.servlet.internal.FilterChainImpl.doFilter(FilterChainImpl.java:74) at 
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3288) at 
weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3254) at 
weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321) at 
weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120) at 
weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:57) at 
weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2163) at 
weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2089) at 
weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2074) at 
weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1513) at 
weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:254) at 
weblogic.work.ExecuteThread.execute(ExecuteThread.java:256) at 
weblogic.work.ExecuteThread.run(ExecuteThread.java:221) Caused by: java.lang.NullPointerException at 
freemarker.ext.jsp.FreeMarkerPageContext.(FreeMarkerPageContext.java:159) at 
freemarker.ext.jsp.FreeMarkerPageContext21.(FreeMarkerPageContext21.java:36) at 
freemarker.ext.jsp.FreeMarkerPageContext21.create(FreeMarkerPageContext21.java:40) ... 100 more

缓存不太可能被破坏到导致可重复的反射错误。定义某一点。它看起来更像数据或预期不存在的对象;已经抛出了NPE。这只有在servlet为null时才可能,只有在ServletContextHashModel.servlet为null时才可能,只有在调用不推荐的ServletContextHashModelServletContext、ObjectWrapper构造函数时才可能。我相信FreeMarker不会这么说。你确定版本号吗?很奇怪。为什么前两个原因跟踪行中缺少方法名?根据我所说,它与FTL缓存无关。。。它在Servlet/JSP集成中。谢谢@ddekany是的freemarker版本是2.3.16,是的,我们从调查中注意到Servlet为null,但没有发现原因。前两行如下我们有一个struts2拦截器类,它调用struts2树中的方法[23/09/2014 15:53:52]com.path.lib.common.interceptor.PathSessionInterceptor.interceptor.interceptPathSessionInterceptor.java:80[错误]:PathSessionInterceptor操作类是com.path.actions.common.menu.treeNuctionServlet/JSP集成问题可能是什么?