0

我在使用 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

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

4

3 回答 3

2

转到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,您应该会看到您的 webapp。进入 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 没有接受更改。

于 2011-01-19T12:01:39.487 回答
0

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

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

于 2011-01-16T19:46:00.300 回答
0

至少库 jar 文件必须位于WEB-INF/lib您的 war 文件中。而且您只需要将war 文件部署到您的productiv Web 服务器。

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

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

于 2011-01-18T09:20:30.133 回答