【问题标题】:ClassNotFoundException with Spring sample projects带有 Spring 示例项目的 ClassNotFoundException
【发布时间】:2014-02-05 21:43:20
【问题描述】:

我正在尝试在 Eclipse 中运行最新的 Spring 示例项目,但我总是遇到 ClassNotFoundException。 (例如 spring-mvc-showcase 项目)

环境:

  • Ubuntu 12.04,64 位(与 13.10 相同的问题)
  • openjdk-7-jdk,openjdk-7-jre 已安装
  • Eclipse kepler Java EE 版本,已安装 STS。

步骤:

  • 我新建了一个项目:Spring/Import Spring Getting Started Content
  • 加载完所有依赖后,右键项目名/Run As/Run On Server: J2EE Preview at localhost

码头输出:

2014-01-16 20:13:01.241:INFO:oejs.Server:jetty-8.1.10.v20130312 2014-01-16 20:13:02.905:WARN:oejw.StandardDescriptorProcessor:无法实例化监听器 org.springframework.web.context.ContextLoaderListener java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener 在 java.net.URLClassLoader$1.run(URLClassLoader.java:366) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:355) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) 在 org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:424) 在 org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:377) 在 org.eclipse.jetty.server.handler.ContextHandler.loadClass(ContextHandler.java:1517) 在 org.eclipse.jetty.webapp.StandardDescriptorProcessor.visitListener(StandardDescriptorProcessor.java:1839) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 org.eclipse.jetty.webapp.IterativeDescriptorProcessor.visit(IterativeDescriptorProcessor.java:80) 在 org.eclipse.jetty.webapp.IterativeDescriptorProcessor.process(IterativeDescriptorProcessor.java:67) 在 org.eclipse.jetty.webapp.MetaData.resolve(MetaData.java:332) 在 org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1219) 在 org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:710) 在 org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) 在 org.eclipse.jetty.server.Server.doStart(Server.java:280) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.wst.server.preview.internal.PreviewStarter.run(PreviewStarter.java:72) 在 org.eclipse.wst.server.preview.internal.PreviewStarter.main(PreviewStarter.java:29) 2014-01-16 20:13:02.931:WARN:oejs.Holder: java.lang.ClassNotFoundException: org.springframework.web.filter.HiddenHttpMethodFilter 在 java.net.URLClassLoader$1.run(URLClassLoader.java:366) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:355) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) 在 org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:424) 在 org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:377) 在 org.eclipse.jetty.util.Loader.loadClass(Loader.java:100) 在 org.eclipse.jetty.util.Loader.loadClass(Loader.java:79) 在 org.eclipse.jetty.servlet.Holder.doStart(Holder.java:97) 在 org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:91) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:719) 在 org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265) 在 org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1221) 在 org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:710) 在 org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) 在 org.eclipse.jetty.server.Server.doStart(Server.java:280) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.wst.server.preview.internal.PreviewStarter.run(PreviewStarter.java:72) 在 org.eclipse.wst.server.preview.internal.PreviewStarter.main(PreviewStarter.java:29) 2014-01-16 20:13:02.932:WARN:oejuc.AbstractLifeCycle:FAILED httpMethodFilter:javax.servlet.UnavailableException:org.springframework.web.filter.HiddenHttpMethodFilter javax.servlet.UnavailableException:org.springframework.web.filter.HiddenHttpMethodFilter 在 org.eclipse.jetty.servlet.Holder.doStart(Holder.java:104) 在 org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:91) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:719) 在 org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265) 在 org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1221) 在 org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:710) 在 org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) 在 org.eclipse.jetty.server.Server.doStart(Server.java:280) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.wst.server.preview.internal.PreviewStarter.run(PreviewStarter.java:72) 在 org.eclipse.wst.server.preview.internal.PreviewStarter.main(PreviewStarter.java:29) 2014-01-16 20:13:02.933:WARN:oejw.WebAppContext:上下文 oejwWebAppContext{/petclinic 启动失败,[file:/home/szilard/workspace/.metadata/.plugins/org.eclipse.wst.server .core/tmp0/spring-petclinic/, jar:file:/home/szilard/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/spring-petclinic/WEB-INF/lib/jquery -2.0.3-1.jar!/META-INF/resources/, jar:file:/home/szilard/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/spring-petclinic/ WEB-INF/lib/jquery-ui-1.10.3.jar!/META-INF/resources/, jar:file:/home/szilard/workspace/.metadata/.plugins/org.eclipse.wst.server.core /tmp0/spring-petclinic/WEB-INF/lib/bootstrap-2.3.0.jar!/META-INF/resources/]},/home/szilard/workspace/.metadata/.plugins/org.eclipse.wst。 server.core/tmp0/spring-petclinic javax.servlet.UnavailableException:org.springframework.web.filter.HiddenHttpMethodFilter 在 org.eclipse.jetty.servlet.Holder.doStart(Holder.java:104) 在 org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:91) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:719) 在 org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265) 在 org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1221) 在 org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:710) 在 org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) 在 org.eclipse.jetty.server.Server.doStart(Server.java:280) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.wst.server.preview.internal.PreviewStarter.run(PreviewStarter.java:72) 在 org.eclipse.wst.server.preview.internal.PreviewStarter.main(PreviewStarter.java:29) 2014-01-16 20:13:03.416:WARN:oejw.StandardDescriptorProcessor:无法实例化监听器 org.springframework.web.context.ContextLoaderListener java.lang.ClassNotFoundException:org.springframework.web.context.ContextLoaderListener 在 java.net.URLClassLoader$1.run(URLClassLoader.java:366) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:355) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) 在 org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:424) 在 org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:377) 在 org.eclipse.jetty.server.handler.ContextHandler.loadClass(ContextHandler.java:1517) 在 org.eclipse.jetty.webapp.StandardDescriptorProcessor.visitListener(StandardDescriptorProcessor.java:1839) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:606) 在 org.eclipse.jetty.webapp.IterativeDescriptorProcessor.visit(IterativeDescriptorProcessor.java:80) 在 org.eclipse.jetty.webapp.IterativeDescriptorProcessor.process(IterativeDescriptorProcessor.java:67) 在 org.eclipse.jetty.webapp.MetaData.resolve(MetaData.java:332) 在 org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1219) 在 org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:710) 在 org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) 在 org.eclipse.jetty.server.Server.doStart(Server.java:280) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.wst.server.preview.internal.PreviewStarter.run(PreviewStarter.java:72) 在 org.eclipse.wst.server.preview.internal.PreviewStarter.main(PreviewStarter.java:29) 2014-01-16 20:13:03.431:WARN:oejs.Holder: java.lang.ClassNotFoundException:org.springframework.web.filter.DelegatingFilterProxy 在 java.net.URLClassLoader$1.run(URLClassLoader.java:366) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:355) 在 java.security.AccessController.doPrivileged(本机方法) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:354) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) 在 org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:424) 在 org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:377) 在 org.eclipse.jetty.util.Loader.loadClass(Loader.java:100) 在 org.eclipse.jetty.util.Loader.loadClass(Loader.java:79) 在 org.eclipse.jetty.servlet.Holder.doStart(Holder.java:97) 在 org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:91) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:719) 在 org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265) 在 org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1221) 在 org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:710) 在 org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) 在 org.eclipse.jetty.server.Server.doStart(Server.java:280) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.wst.server.preview.internal.PreviewStarter.run(PreviewStarter.java:72) 在 org.eclipse.wst.server.preview.internal.PreviewStarter.main(PreviewStarter.java:29) 2014-01-16 20:13:03.432:WARN:oejuc.AbstractLifeCycle:FAILED csrfFilter: javax.servlet.UnavailableException: org.springframework.web.filter.DelegatingFilterProxy javax.servlet.UnavailableException:org.springframework.web.filter.DelegatingFilterProxy 在 org.eclipse.jetty.servlet.Holder.doStart(Holder.java:104) 在 org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:91) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:719) 在 org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265) 在 org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1221) 在 org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:710) 在 org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) 在 org.eclipse.jetty.server.Server.doStart(Server.java:280) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.wst.server.preview.internal.PreviewStarter.run(PreviewStarter.java:72) 在 org.eclipse.wst.server.preview.internal.PreviewStarter.main(PreviewStarter.java:29) 2014-01-16 20:13:03.432:WARN:oejw.WebAppContext:上下文 oejwWebAppContext{/spring-mvc-showcase,file:/home/szilard/workspace/.metadata/.plugins/org.eclipse 启动失败。 wst.server.core/tmp0/spring-mvc-showcase/},/home/szilard/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/spring-mvc-showcase javax.servlet.UnavailableException:org.springframework.web.filter.DelegatingFilterProxy 在 org.eclipse.jetty.servlet.Holder.doStart(Holder.java:104) 在 org.eclipse.jetty.servlet.FilterHolder.doStart(FilterHolder.java:91) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:719) 在 org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:265) 在 org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1221) 在 org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:710) 在 org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:454) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:229) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:95) 在 org.eclipse.jetty.server.Server.doStart(Server.java:280) 在 org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:64) 在 org.eclipse.wst.server.preview.internal.PreviewStarter.run(PreviewStarter.java:72) 在 org.eclipse.wst.server.preview.internal.PreviewStarter.main(PreviewStarter.java:29) 2014-01-16 20:13:03.485:INFO:oejs.AbstractConnector:Started SelectChannelConnector@0.0.0.0:8080

【问题讨论】:

    标签: java eclipse spring maven spring-mvc


    【解决方案1】:

    您提到Spring MVC Showcase 作为您尝试运行的项目。我建议在尝试在 Eclipse 中构建和运行之前从终端运行。这消除了您在 Eclipse 环境中可能遇到的任何问题。 github页面上的自述文件说要运行以下命令:

    mvn tomcat7:run
    

    应用程序将构建并部署到 Tomcat 7 实例。你会在终端中看到这个。启动后,您可以通过以下 URL 访问展示应用程序:

    http://localhost:8080/spring-mvc-showcase/
    

    我刚刚尝试了这些步骤,并且能够在我的浏览器中成功查看展示应用程序。在您确认可以从终端运行应用程序后,您可以尝试将其部署到 Eclipse 中的 Tomcat。

    【讨论】:

    • 您的建议有效,如果我使用 maven 运行它,它现在可以运行。现在我必须弄清楚eclipse有什么问题......
    • @Andrea 当我将项目加载到 eclip 时,它说: 描述资源路径位置类型插件执行未包含在生命周期配置中:org.codehaus.mojo:aspectj-maven-plugin:1.2:compile ( execution: default, phase: process-sources) pom.xml /spring-mvc-showcase line 271 Maven Project Build Lifecycle Mapping Problem
    • 尝试在 Eclipse 中作为“现有的 Maven 项目”导入,并将其指向 pom.xml 所在的文件夹。当我这样做时,我可以将项目拖到 Apache Tomcat 7 服务器配置中,然后运行它。我正在使用 Spring Tool Suite Eclipse 发行版。
    • 看起来您需要 AspectJ 开发工具。从 Eclipse Marketplace 下载可能是最简单的安装方式。
    【解决方案2】:

    检查项目是否在maven下。

    使用以下命令打包项目。

    mvn 清洁包

    然后尝试再次运行。

    【讨论】:

    • 这也有效。我可以构建一个war文件,并在tomcat7中运行它。但是eclipse还是有问题...
    【解决方案3】:

    这完全取决于您的项目的性质......如果这是一个 你应该做的maven项目

    • 在编译中有这些依赖项
    • 以战争为包装

    eclipse 中的 pom 编辑器是你确保这两点的朋友

    如果是 wtp 项目,则构建路径设置会在 Eclipse 版本之间更改

    但是...最终结果必须相同:检查构建的战争并确保这些库在 WEB-INF/lib 中

    【讨论】:

      【解决方案4】:

      如果项目不是maven搭建的,是简单的eclipse动态web项目,试试这个

      如果存在,删除目录<workspace-directory>\.metadata\.plugins\org.eclipse.core.resources中的.snap文件

      删除此文件后,您可以毫无问题地启动 Eclipse。

      如果没有,请删除以下目录<workspace-directory>\.metadata\.plugins\org.eclipse.wst.server.core中的tmp0(名称可能与tmp不同)文件夹

      如果删除此文件夹有任何问题,请重新启动 eclipse,然后再次删除该文件夹。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-26
        • 1970-01-01
        • 2012-05-28
        • 2012-03-11
        相关资源
        最近更新 更多