2012-04-08 49 views
0

我试图放在一起GWT webapp后面this GWT MVP tutorial但使用较新版本的使用过的库,因为它们不是所有都可用或与GWT 2.4不兼容。NoClassDefFoundError与杜松子酒1.5和GWT 2.4

的问题是,当我运行该项目,我得到以下控制台:

Starting Jetty on port 8888 
[WARN] failed com.g[email protected]6ee76fcc{/,/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 
项目所需VS库

图书馆我有:

  • gin.jar - - 杜松子酒-1.5-后GWT-2.2.jar(杜松子酒1.5)
  • aopalliance.jar(从谷歌杜松子酒)--- aopalliance.jar(杜松子酒1.5)
  • guice-2.0.jar(来自Google Gin。重要提示 - 使用Gin提供的版本,而不是Guice)--- guice-snapshot.jar(gin-1.5)
  • guice-servlet-2.0.jar(来自Google Guice)--- guice-servlet- 3.0.jar(吉斯-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

我在[使用2.2版后的GWT编译器进行编译时使用了gin-1.0](http://populationjim.com/2011/02/14/how-to-make-gwt-2-2-用杜松子酒/),但这不是我的问题的答案。 – Raidok 2012-04-08 21:21:39

回答

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.jarGuice 3.0.jar。 只保留Guice 3.0.jar。这应该可以解决你的问题。

+0

碰撞是。我用Guice 3.0 jar替换了所有Guice快照版本,并且它工作。谢谢! – Raidok 2012-04-09 10:59:28

1

我按照相同的教程,我试图使用更新的JARS,就像你做的那样,我发现了和你一样的错误,你可以在这里看到:GWT, Guice and GIN compilation。这个问题是由于一些丢失的JARS造成的,具体是Guice-3.0.jar

非常需要JAR在你的类路径中:应该解决这个问题。