tomakehurst / spring-closure-templates

Google Closure Templates integration into Spring MVC
Apache License 2.0
16 stars 9 forks source link

HTTP Status 500 - Handler processing failed; nested exception is java.lang.NoClassDefFoundError: com/google/inject/internal/Lists #5

Open charyorde opened 10 years ago

charyorde commented 10 years ago

Hi,

Thanks for the project. It's been 2 years, so I don't know if this project is still active. But I'll try.

My project uses Spring 4.0.0.RELEASE, Java 7, Tomcat 7 and servlet 3.0. I pointed the request dispatcher to listen at / where I have my index resource. Unfortunately I'm getting this:

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: com/google/inject/internal/Lists
    org.springframework.web.servlet.DispatcherServlet.triggerAfterCompletionWithError(DispatcherServlet.java:1284)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:965)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:931)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:822)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:807)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause

java.lang.NoClassDefFoundError: com/google/inject/internal/Lists
    com.google.inject.assistedinject.FactoryProvider.createMethodMapping(FactoryProvider.java:221)
    com.google.inject.assistedinject.FactoryProvider.newFactory(FactoryProvider.java:160)
    com.google.inject.assistedinject.FactoryProvider.newFactory(FactoryProvider.java:155)
    com.google.template.soy.tofu.internal.TofuModule.configure(Unknown Source)
    com.google.inject.AbstractModule.configure(AbstractModule.java:59)
    com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223)
    com.google.inject.AbstractModule.install(AbstractModule.java:118)
    com.google.template.soy.SoyModule.configure(Unknown Source)
    com.google.inject.AbstractModule.configure(AbstractModule.java:59)
    com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223)
    com.google.inject.spi.Elements.getElements(Elements.java:101)
    com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:133)
    com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:103)
    com.google.inject.Guice.createInjector(Guice.java:95)
    com.google.inject.Guice.createInjector(Guice.java:72)
    com.google.inject.Guice.createInjector(Guice.java:62)
    com.google.template.soy.GuiceInitializer.initializeIfNecessary(Unknown Source)
    com.google.template.soy.SoyFileSet$Builder.<init>(Unknown Source)
    com.google.template.soy.SoyFileSet$Builder.<init>(Unknown Source)
    com.tomakehurst.springclosuretemplates.web.mvc.ClosureTemplateViewResolver.compileTemplates(ClosureTemplateViewResolver.java:51)
    com.tomakehurst.springclosuretemplates.web.mvc.ClosureTemplateViewResolver.buildView(ClosureTemplateViewResolver.java:77)
    org.springframework.web.servlet.view.UrlBasedViewResolver.loadView(UrlBasedViewResolver.java:437)
    org.springframework.web.servlet.view.AbstractCachingViewResolver.createView(AbstractCachingViewResolver.java:244)
    org.springframework.web.servlet.view.UrlBasedViewResolver.createView(UrlBasedViewResolver.java:402)
    org.springframework.web.servlet.view.AbstractCachingViewResolver.resolveViewName(AbstractCachingViewResolver.java:146)
    org.springframework.web.servlet.view.ContentNegotiatingViewResolver.getCandidateViews(ContentNegotiatingViewResolver.java:363)
    org.springframework.web.servlet.view.ContentNegotiatingViewResolver.resolveViewName(ContentNegotiatingViewResolver.java:284)
    org.springframework.web.servlet.DispatcherServlet.resolveViewName(DispatcherServlet.java:1264)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1204)
    org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1012)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:931)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:822)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:807)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

root cause

java.lang.ClassNotFoundException: com.google.inject.internal.Lists
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
    com.google.inject.assistedinject.FactoryProvider.createMethodMapping(FactoryProvider.java:221)
    com.google.inject.assistedinject.FactoryProvider.newFactory(FactoryProvider.java:160)
    com.google.inject.assistedinject.FactoryProvider.newFactory(FactoryProvider.java:155)
    com.google.template.soy.tofu.internal.TofuModule.configure(Unknown Source)
    com.google.inject.AbstractModule.configure(AbstractModule.java:59)
    com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223)
    com.google.inject.AbstractModule.install(AbstractModule.java:118)
    com.google.template.soy.SoyModule.configure(Unknown Source)
    com.google.inject.AbstractModule.configure(AbstractModule.java:59)
    com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223)
    com.google.inject.spi.Elements.getElements(Elements.java:101)
    com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:133)
    com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:103)
    com.google.inject.Guice.createInjector(Guice.java:95)
    com.google.inject.Guice.createInjector(Guice.java:72)
    com.google.inject.Guice.createInjector(Guice.java:62)
    com.google.template.soy.GuiceInitializer.initializeIfNecessary(Unknown Source)
    com.google.template.soy.SoyFileSet$Builder.<init>(Unknown Source)
    com.google.template.soy.SoyFileSet$Builder.<init>(Unknown Source)
    com.tomakehurst.springclosuretemplates.web.mvc.ClosureTemplateViewResolver.compileTemplates(ClosureTemplateViewResolver.java:51)
    com.tomakehurst.springclosuretemplates.web.mvc.ClosureTemplateViewResolver.buildView(ClosureTemplateViewResolver.java:77)
    org.springframework.web.servlet.view.UrlBasedViewResolver.loadView(UrlBasedViewResolver.java:437)
    org.springframework.web.servlet.view.AbstractCachingViewResolver.createView(AbstractCachingViewResolver.java:244)
    org.springframework.web.servlet.view.UrlBasedViewResolver.createView(UrlBasedViewResolver.java:402)
    org.springframework.web.servlet.view.AbstractCachingViewResolver.resolveViewName(AbstractCachingViewResolver.java:146)
    org.springframework.web.servlet.view.ContentNegotiatingViewResolver.getCandidateViews(ContentNegotiatingViewResolver.java:363)
    org.springframework.web.servlet.view.ContentNegotiatingViewResolver.resolveViewName(ContentNegotiatingViewResolver.java:284)
    org.springframework.web.servlet.DispatcherServlet.resolveViewName(DispatcherServlet.java:1264)
    org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1204)
    org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1012)
    org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:959)
    org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)
    org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:931)
    org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:822)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:807)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

That class seems deprecated. When I switched to try out guice 3, the stack trace is similar to the one above.

Any plans to get spring-closure-template to work on Spring 4, Java 7, Tomcat 7 and servlet 3.0?

Thanks for helping out.

tomakehurst commented 10 years ago

Hi,

Yes, unfortunately I'm not actively working on this library any more as I no longer use Spring or GCT. The latter doesn't seem to get much love from Google these days either.

Have you looked at more widely used/supported options like Mustache?

Cheers, Tom

charyorde commented 10 years ago

Thanks for the response.

Yes I've looked at Mustache. I simply wanted an entry point with spring-closure-templates, then make use of mustache only on the client side. But it seems the reverse will be the case.