如何让Eclipse / Jetty / GWT2.0找到org / apache / commons / logging / Log

时间:2010-01-26 05:44:05

标签: java eclipse gwt jetty apache-commons-logging

我按照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个

2 个答案:

答案 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)。