0

我正在开发我的 web 应用程序,它在码头上运行,我没有任何问题;但是添加了一个 POST Web 服务,当我运行项目时出现此错误:

    013-06-17 12:08:19.398:INFO::jetty-6.1.26
2013-06-17 12:08:19.437:INFO::Extract /Users/carlo/Projects/datalift/wrapper/dist/DataLift.app/Contents/Resources/webapps/openrdf-sesame.war to /Users/carlo/Library/Caches/DataLift/webapps/openrdf-sesame/webapp
2013-06-17 12:08:20.101:INFO:/openrdf-sesame:Initializing Spring FrameworkServlet 'openrdf-http-server'
2013-06-17 12:08:20.678:INFO::Extract /Users/carlo/Projects/datalift/wrapper/dist/DataLift.app/Contents/Resources/webapps/datalift.war to /Users/carlo/Library/Caches/DataLift/webapps/datalift/webapp
2013-06-17 12:08:20.706:WARN::failed org.mortbay.jetty.webapp.WebAppContext@6e7616ad{/datalift,/Users/carlo/Projects/datalift/wrapper/dist/DataLift.app/Contents/Resources/webapps/datalift.war}: java.lang.NoClassDefFoundError: org/datalift/fwk/log/web/LogServletContextListener
2013-06-17 12:08:20.707:WARN::failed HandlerCollection@acaf083: java.lang.NoClassDefFoundError: org/datalift/fwk/log/web/LogServletContextListener
2013-06-17 12:08:20.707:WARN::Error starting handlers
java.lang.NoClassDefFoundError: org/datalift/fwk/log/web/LogServletContextListener
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:392)
    at org.mortbay.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:363)
    at org.mortbay.jetty.handler.ContextHandler.loadClass(ContextHandler.java:1102)
    at org.mortbay.jetty.webapp.WebXmlConfiguration.initListener(WebXmlConfiguration.java:630)
    at org.mortbay.jetty.webapp.WebXmlConfiguration.initWebXmlElement(WebXmlConfiguration.java:368)
    at org.mortbay.jetty.webapp.WebXmlConfiguration.initialize(WebXmlConfiguration.java:289)
    at org.mortbay.jetty.webapp.WebXmlConfiguration.configure(WebXmlConfiguration.java:222)
    at org.mortbay.jetty.webapp.WebXmlConfiguration.configureWebApp(WebXmlConfiguration.java:180)
    at org.mortbay.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1279)
    at org.mortbay.jetty.handler.ContextHandler.doStart(ContextHandler.java:518)
    at org.mortbay.jetty.webapp.WebAppContext.doStart(WebAppContext.java:499)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerCollection.doStart(HandlerCollection.java:152)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.mortbay.jetty.handler.HandlerWrapper.doStart(HandlerWrapper.java:130)
    at org.mortbay.jetty.Server.doStart(Server.java:224)
    at org.mortbay.component.AbstractLifeCycle.start(AbstractLifeCycle.java:50)
    at org.datalift.wrapper.Wrapper.main(Wrapper.java:320)
2013-06-17 12:08:20.712:INFO::Started SocketConnector@localhost:9091

尽管我删除了该方法,并尝试重新配置并重新运行应用程序,但我总是收到此错误。怎么了?我该如何解决?

4

1 回答 1

0

1-当我写这篇文章时,你使用的是 150 多个版本的 jetty6。jetty9 目前...当前

2- 由于它不是 ClassNotFoundException,我想知道您在类加载器中是否有该类的多个实例,这通常会导致 NoClassDefFound。也许您的 webapp 中有多个版本?检查您是否在 jetty.home/lib(可能是 lib/ext)下有一对,因为使用正确的命令行选项,您可能会将其暴露给通常隔离的 webapp 类加载器。当您在 WebAppContext 上也将 parentLoaderPriority 设置为 true 时,这通常是一个问题,如果您对此进行了摆弄。

[编辑] 您可能正在使用 maven 插件,在这种情况下,请再次确保您没有通过插件加载该类的多个实例,无论是通过可能具有不同 groupId:artifact:versions 的依赖项还是在下面浮动的多个版本目标,如果那是您的项目结构(当您在发布后更新和重新编译时可以看到)

于 2013-06-17T11:15:16.167 回答