【问题标题】:Spring can't find a lib and webapp doesn't start up in tomcat 6Spring找不到lib并且webapp无法在tomcat 6中启动
【发布时间】:2011-01-16 17:33:44
【问题描述】:

我在使用 STS 时遇到了这个问题:我正在构建一个简单的 Spring 应用程序,只是为了尝试 MVC 和持久性等功能。现在,我从一堆我正在使用的 Spring 3 教程中创建了一些非常简单的东西。在服务器启动期间,应用程序因此失败:

代码:

org.springframework.beans.factory.BeanCreationException:创建名为“org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping#0”的bean时出错:bean初始化失败;嵌套异常是 org.springframework.beans.factory.CannotLoadBeanClassException:找不到类 [org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean] 用于 ServletContext 资源 [/WEB-INF/spring/appServlet/ 中定义的名称为“mySessionFactory”的 bean servlet-context.xml];嵌套异常是 java.lang.ClassNotFoundException: org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean

但我在web-inf/classes 文件夹中有org.springframework.orm(我什至尝试将其放入web-inf/lib)。当我在那里复制这些库时,它们出现在 Web App Libraries 文件夹中。在 STS 中构建此项目工作正常,因为此依赖项是通过项目属性在构建路径中设置的,但是如何将库传输到 Web 应用程序? (我使用的是 Tomcat 6,因为它是我将来某个时候将用于生产的服务器)。这是我的 XML 的配置问题吗?还是我只是错过了放置这个库的正确方法? (我之前遇到过同样的问题,但是在类中添加所需的库就解决了)。不仅如此,如果我在工作区中浏览到 tomcat 的工作文件夹应该所在的文件夹,我找不到任何工作目录和任何 commo

【问题讨论】:

  • 你的项目是 maven 项目吗(STS 2.5.2 Spring MVC 模板基于 Maven)?

标签: eclipse spring sts-springsourcetoolsuite


【解决方案1】:

转到Servers 视图并双击Tomcat Server,这将打开一个Tomcat 概述页面。这将向您显示 Eclipse 用于将您的 web 应用程序发布到的服务器路径和部署路径。

例如,我的是:

服务器路径.metadata\.plugins\org.eclipse.wst.server.core\tmp0
部署路径wtpwebapps

现在在命令提示符(或资源管理器)中浏览到 %ECLIPSE_HOME%\workspaces\default\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps,您应该会看到您的 web 应用程序。进入 WEB-INF\lib 目录并检查你的 jar 是否在那里。

有几件事可以尝试:

  • 如果 jar 不在 WEB-INF\lib 中,您可能需要重新发布它。在 Servers 视图中右键单击 Tomcat,然后单击 Publish。出现了吗?如果没有,再次右键单击 Tomcat,这次选择Clean...,它将清除所有内容并重新发布。如果这不起作用,蛮力方法是手动删除文件,然后告诉 Eclipse 重新发布它们。

  • 通过在“服务器”视图中右键单击 Tomcat 下的 webapp 并选择 Clean module work directory,清理您的工作目录。或者通过从%ECLIPSE_HOME%\workspaces\default\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost删除来手动执行此操作

  • 您还应该尝试关闭-重新打开/清理/重建/刷新您的 webapp 项目,以防 Eclipse 没有接收到更改。

【讨论】:

    【解决方案2】:

    您需要将各种 Spring JAR 放入您的 WEB-INF/lib 目录(WEB-INF/classes 对 JAR 文件没有用处)。

    您不仅需要org.springframework.orm,还需要其中的大部分(有关依赖关系图,请参阅here)。

    【讨论】:

      【解决方案3】:

      至少库 jar 文件必须位于您的 war 文件中的 WEB-INF/lib。并且您只需要将 war 文件部署到您的生产网络服务器。

      • 如果您使用 STS 但您的项目不是 Maven 项目:那么您需要将文件放在 <projectRoot>/WebContent/WEB-INF/libs 中。(要使用 Eclipse/STS 构建战争,您需要执行 Export/Web/WAR 文件.)

      • 如果你使用Maven,那么你需要在pom.xml中指定你的依赖,并使用maven来打包war(运行为/Maven包)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-03
        • 1970-01-01
        • 1970-01-01
        • 2018-06-29
        • 2018-03-09
        • 1970-01-01
        相关资源
        最近更新 更多