我按照http://blog.hivedevelopment.co.uk/2009/08/google-web-toolkit-gwt-mvp-example.html上的示例构建了示例GWT应用程序,但后来我想构建其他内容,并且我打算使用Google AppEngine。我开始了一个新的GWT2.0 + AppEngine项目,并遵循相同的设置,添加相同的库,复制和修改我的示例项目中的大部分代码。我的代码编译,但现在每次我尝试调试我的应用程序时,我得到此异常,没有任何作用。每次启动服务时,此异常都会重复两次。我以为我可能会丢失org.apache.commons.logging.Log,但是当我按住ctrl +点击那条路径时,它是GWT SDK中gwt-dev.jar的一部分。我需要做些什么来解决这个问题?
2010年1月26日上午5:23:13 com.google.apphosting.utils.jetty.JettyLogger警告 警告:com.google.apphosting.utils.jetty.DevAppEngineWebAppContext@460ab1b4 {/,/ home / asa / Projects / Java / Groceries / Shopping / war}失败 java.lang.NoClassDefFoundError:org / apache / commons / logging / Log 在com.asaayers.server.guice.ServerModule.configureHandlers(ServerModule.java:20) at net.customware.gwt.dispatch.server.guice.ActionHandlerModule.configure(ActionHandlerModule.java:38) 在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.InjectorShell $ Builder.build(InjectorShell.java:135) 在com.google.inject.InjectorBuilder.build(InjectorBuilder.java:102) 在com.google.inject.Guice.createInjector(Guice.java:92) 在com.google.inject.Guice.createInjector(Guice.java:69) 在com.google.inject.Guice.createInjector(Guice.java:59) 在com.asaayers.server.guice.MyGuiceServletConfig.getInjector(MyGuiceServletConfig.java:11) 在com.google.inject.servlet.GuiceServletContextListener.contextInitialized(GuiceServletContextListener.java:43) at org.mortbay.jetty.handler.ContextHandler.startContext(ContextHandler.java:530) at org.mortbay.jetty.servlet.Context.startContext(Context.java:135) at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1218) 在org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:500) 在org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:448) 在org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) 在org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117) 在org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) 在org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:117) 在org.mortbay.jetty.Server.doStart(Server.java:217) 在org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:40) 在com.google.appengine.tools.development.JettyContainerService.startContainer(JettyContainerService.java:188) 在com.google.appengine.tools.development.AbstractContainerService.startup(AbstractContainerService.java:120) 在com.google.appengine.tools.development.DevAppServerImpl.start(DevAppServerImpl.java:217) 在com.google.appengine.tools.development.gwt.AppEngineLauncher.start(AppEngineLauncher.java:86) 在com.google.gwt.dev.DevMode.doStartUpServer(DevMode.java:377) 在com.google.gwt.dev.DevModeBase.startUp(DevModeBase.java:938) 在com.google.gwt.dev.DevModeBase.run(DevModeBase.java:690) 在com.google.gwt.dev.DevMode.main(DevMode.java:251) 引起:java.lang.ClassNotFoundException:org.apache.commons.logging.Log 在java.net.URLClassLoader $ 1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) 在java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 在com.google.appengine.tools.development.IsolatedAppClassLoader.loadClass(IsolatedAppClassLoader.java:151) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) ......还有31个
答案 0 :(得分:2)
Guice似乎使用了commons-logging。 该教程描述了如何在war / WEB-INF / bin中放入一大堆jar。您需要从commons-logging网站下载zip文件,打开它并找到commons-logging-1.1.1.jar,并将其放在war / WEB-INF / lib中。
Commons-logging会发现你的类路径中有log4j,并自动使用它。
答案 1 :(得分:0)
Guice不使用commons-logging。也许你的其他一个库使用它。 Guice只依赖于核心JDK(5.0)。