2012-04-08 4 views
0

Я пытаюсь собрать GWT webapp после this GWT MVP tutorial, но используя более новые версии используемых библиотек, потому что не все они доступны или не совместимы с GWT 2.4.NoClassDefFoundError с Gin 1.5 и GWT 2.4

Проблема заключается в том, что при запуске проекта, я получаю следующее в консоли:

Starting Jetty on port 8888 
[WARN] failed com.go[email protected]ee76fcc{/,/home/raido/Kood/workspaceJava/gwtmvp/war} 
java.lang.NoClassDefFoundError: com/google/inject/internal/util/$Preconditions 
at com.google.inject.servlet.ServletModule.configure(ServletModule.java:44) 
at com.google.inject.AbstractModule.configure(AbstractModule.java:59) 
at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223) 
at com.google.inject.spi.Elements.getElements(Elements.java:101) 
at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:135) 
at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:113) 
at com.google.inject.InjectorBuilder.build(InjectorBuilder.java:101) 
at com.google.inject.Guice.createInjector(Guice.java:105) 
at com.google.inject.Guice.createInjector(Guice.java:76) 
at com.google.inject.Guice.createInjector(Guice.java:63) 
at gwtmvp.server.guice.GuiceServletConfig.getInjector(GuiceServletConfig.java:11) 
at com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java:45) 
at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:543) 
at org.mortbay.jetty.servlet.Context.startContext(Context.java:136) 
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1220) 
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:513) 
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448) 
at com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload.doStart(JettyLauncher.java:468) 
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
at org.mortbay.jetty.handler.RequestLogHandler.doStart(RequestLogHandler.java:115) 
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
at org.mortbay.jetty.Server.doStart(Server.java:222) 
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
at com.google.gwt.dev.shell.jetty.JettyLauncher.start(JettyLauncher.java:672) 
at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:509) 
at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1068) 
at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811) 
at com.google.gwt.dev.DevMode.main(DevMode.java:311) 
Caused by: java.lang.ClassNotFoundException: com.google.inject.internal.util.$Preconditions 
at java.lang.ClassLoader.findClass(ClassLoader.java:373) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:352) 
at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:337) 
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:334) 
... 30 more 
[WARN] failed [email protected] 
java.lang.NoClassDefFoundError: com/google/inject/internal/util/$Preconditions 
at com.google.inject.servlet.ServletModule.configure(ServletModule.java:44) 
at com.google.inject.AbstractModule.configure(AbstractModule.java:59) 
at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223) 
at com.google.inject.spi.Elements.getElements(Elements.java:101) 
at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:135) 
at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:113) 
at com.google.inject.InjectorBuilder.build(InjectorBuilder.java:101) 
at com.google.inject.Guice.createInjector(Guice.java:105) 
at com.google.inject.Guice.createInjector(Guice.java:76) 
at com.google.inject.Guice.createInjector(Guice.java:63) 
at gwtmvp.server.guice.GuiceServletConfig.getInjector(GuiceServletConfig.java:11) 
at com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java:45) 
at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:543) 
at org.mortbay.jetty.servlet.Context.startContext(Context.java:136) 
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1220) 
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:513) 
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448) 
at com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload.doStart(JettyLauncher.java:468) 
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
at org.mortbay.jetty.handler.RequestLogHandler.doStart(RequestLogHandler.java:115) 
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
at org.mortbay.jetty.Server.doStart(Server.java:222) 
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
at com.google.gwt.dev.shell.jetty.JettyLauncher.start(JettyLauncher.java:672) 
at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:509) 
at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1068) 
at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811) 
at com.google.gwt.dev.DevMode.main(DevMode.java:311) 
Caused by: java.lang.ClassNotFoundException: com.google.inject.internal.util.$Preconditions 
at java.lang.ClassLoader.findClass(ClassLoader.java:373) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:352) 
at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:337) 
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:334) 
... 30 more 
[WARN] Error starting handlers 
java.lang.NoClassDefFoundError: com/google/inject/internal/util/$Preconditions 
at com.google.inject.servlet.ServletModule.configure(ServletModule.java:44) 
at com.google.inject.AbstractModule.configure(AbstractModule.java:59) 
at com.google.inject.spi.Elements$RecordingBinder.install(Elements.java:223) 
at com.google.inject.spi.Elements.getElements(Elements.java:101) 
at com.google.inject.internal.InjectorShell$Builder.build(InjectorShell.java:135) 
at com.google.inject.internal.InternalInjectorCreator.build(InternalInjectorCreator.java:113) 
at com.google.inject.InjectorBuilder.build(InjectorBuilder.java:101) 
at com.google.inject.Guice.createInjector(Guice.java:105) 
at com.google.inject.Guice.createInjector(Guice.java:76) 
at com.google.inject.Guice.createInjector(Guice.java:63) 
at gwtmvp.server.guice.GuiceServletConfig.getInjector(GuiceServletConfig.java:11) 
at com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java:45) 
at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:543) 
at org.mortbay.jetty.servlet.Context.startContext(Context.java:136) 
at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1220) 
at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:513) 
at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448) 
at com.google.gwt.dev.shell.jetty.JettyLauncher$WebAppContextWithReload.doStart(JettyLauncher.java:468) 
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
at org.mortbay.jetty.handler.RequestLogHandler.doStart(RequestLogHandler.java:115) 
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130) 
at org.mortbay.jetty.Server.doStart(Server.java:222) 
at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:39) 
at com.google.gwt.dev.shell.jetty.JettyLauncher.start(JettyLauncher.java:672) 
at com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:509) 
at com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:1068) 
at com.google.gwt.dev.DevModeBase.run(DevModeBase.java:811) 
at com.google.gwt.dev.DevMode.main(DevMode.java:311) 
Caused by: java.lang.ClassNotFoundException: com.google.inject.internal.util.$Preconditions 
at java.lang.ClassLoader.findClass(ClassLoader.java:373) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:352) 
at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:337) 
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:334) 
... 30 more 

библиотек, необходимых для проектов против библиотек у меня есть:

  • gin.jar - - джин-1,5-пост-GWT-2.2.jar (джин-1.5)
  • aopalliance.jar (от Google Gin) --- aopalliance.jar (джин-1.5)
  • guice-2.0.jar (от Google Gin. ВАЖНО - используйте версию, поставляемый с джин и не Guice) --- Guice-snapshot.jar (джин-1,5)
  • Guice-сервлет-2.0.jar (от Google Guice) --- Guice-servlet- 3.0.jar (Guice-3.0)
  • GWT-диспетчерского-1.0.0-SNAPSHOT.jar (от GWT-отправки) --- GWT-диспетчерского-1.2.0.jar
  • GWT-лог- 2.6.2.jar (от GWT-лог) --- GWT-лог-3.1.8.jar
  • GWT-ведущий-1.0.0-SNAPSHOT.jar (от GWT-ведущий) --- GWT -presenter-1.0.0.jar
  • log4j.jar (от log4j) --- log4j-1.2.16.jar

Gwt-ведущий также имеет более новую версию, 1.1.1, который вызвал дополнительные проблемы, так что я вернулся в 1.0.0, но это уже другая история.

У меня есть код, загруженный в GitHub. Большая часть из них - это только копия-паста из упомянутого учебника с незначительными отличиями.

+0

Я получаю немного дальше с [gin-1.0 при компиляции с компилятором пост-2.2 GWT] (http://populationjim.com/2011/02/14/how-to-make-gwt-2-2- work-with-gin /), но это не ответ на мои проблемы. – Raidok

ответ

2

библиотеки вы выложили

guice-2.0.jar (from Google Gin. IMPORTANT - use the version supplied with Gin and not Guice) --- guice-snapshot.jar (gin-1.5) 
guice-servlet-2.0.jar (from Google Guice) --- guice-servlet-3.0.jar (guice-3.0) 

кажется встречными. Кажется, у вас есть Guice 2.0.jar и Guice 3.0.jar как в вашем пути к классу. Держать только Guice 3.0.jar. Это должно решить вашу проблему.

+0

Столкновение было. Я заменил все версии снимков Guice, которые были объединены с Gin с флягами Guice 3.0, и это сработало. Спасибо! – Raidok

1

Я следил за тем же учебником, я пытался использовать последние JARS, как вы, и я нашел те же ошибки, что и вы, как вы можете здесь: GWT, Guice and GIN compilation. Проблема была вызвана тем, что некоторые отсутствующие JARS, в частности Guice-3.0.jar.

Очень то, что требуемый JAR находится в вашем пути к классу: это должно устранить проблему.