Eclipse 弹簧罐';找不到lib,webapp不';不要在tomcat 6中启动

Eclipse 弹簧罐';找不到lib,webapp不';不要在tomcat 6中启动,eclipse,spring,sts-springsourcetoolsuite,Eclipse,Spring,Sts Springsourcetoolsuite,我在使用STS时遇到了这个问题:我正在构建一个简单的Spring应用程序,只是为了尝试MVC和持久性等功能。现在,我从Spring3的一系列教程中创建了一个非常简单的东西,我正在使用它。在服务器启动期间,应用程序因以下原因失败: 代码: org.springframework.beans.factory.BeanCreationException:创建名为“org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandle

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

代码:

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


但是我在
webinf/classes
文件夹中找到了
org.springframework.orm
(我甚至试着把它放到
webinf/lib
)。当我在那里复制这些库时,Web应用程序库文件夹中出现了。在STS中构建此项目工作正常,因为此依赖关系是通过项目属性在构建路径中设置的,但是如何将LIB传输到web应用程序?(我使用的是Tomcat6,因为它是我将来在生产中使用的服务器)。这是我的XML的配置问题吗?还是我只是错过了正确的方式来表达这个想法?(我以前遇到过同样的问题,但在类中添加所需的lib解决了这个问题)。更重要的是,如果我在我的工作区内浏览到tomcat的工作文件夹所在的文件夹,我找不到任何工作目录和任何commo

您需要将各种Spring JAR放入您的
WEB-INF/lib
目录中(
WEB-INF/classes
不适用于JAR文件)


您不仅需要
org.springframework.orm
,还需要它们中的大多数(请参阅依赖关系图)。

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

  • 如果您使用STS,但您的项目不是Maven项目:那么您需要将文件放入
    /WebContent/WEB-INF/libs
    (要使用Eclipse/STS构建war,您需要执行Export/WEB/war文件)

  • 如果使用Maven,则需要在pom.xml中指定依赖项,并使用Maven打包war(以/Maven包的形式运行)


进入
服务器
视图,双击
Tomcat服务器
,打开Tomcat概览页面。这将向您显示Eclipse用于将Web应用发布到的服务器路径和部署路径

例如,我的目标是:

服务器路径
.metadata\.plugins\org.eclipse.wst.Server.core\tmp0

部署路径
wtpwebapps

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

有几件事可以尝试:

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

  • 在Servers视图中右键单击Tomcat下的webapp,然后选择Clean module work directory,以清理您的工作目录。或者从
    %ECLIPSE\u HOME%\workspaces\default\.metadata\.plugins\org.ECLIPSE.wst.server.core\tmp0\work\Catalina\localhost中手动删除

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


您是否计划了一个maven项目(STS 2.5.2 Spring MVC模板基于maven)?