基于Maven的SpringMVC项目DispatcherServlet 类找不到

文章讲述了学生在部署SpringMVC项目时遇到DispatcherServlet找不到的问题,经过排查发现是打包配置错误和Eclipse部署设置不正确两方面原因,涉及Maven依赖管理和Eclipse工作环境配置。
摘要由CSDN通过智能技术生成

        今天学生遇到这么一个问题:基于Maven的SpringMVC项目DispatcherServlet 类找不到,启动时出现异常。

        首先确认了 web.xml 里写的类名是对的,类所在的jar包在项目中也通过maven引进来了,在 maven dependencies 里能看到jar包,也能看到类。所以排除了写错、类不存在这些原因。

        后来发现原因是两个:一是学生删除了war包打包配置的内容。少了红线标注的那一行。修改之后,发现target目录下已经包含了正确的lib文件夹,但错误依旧存在。

进一步确认部署问题。eclipse不像MyEclipse默认将项目部署到Tomcat安装目录下的webapps中,而默认部署到工作目录(workspace)下的特定文件夹中。具体来说,这个位置通常是 .metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps。其中,tmp0表示当前server容器的顺序,可能会根据具体情况有所不同,例如有时可能是tmp1。

这个目录可以被看作是eclipse对Tomcat安装目录的一个克隆,从而使该目录也具备了源服务器的功能。如果想要修改这个默认部署路径,可以在eclipse的服务器视图中进行配置。右键点击Tomcat服务器,选择“Open”或“Properties”,然后在打开的属性面板中找到“Server Locations”选项。在这里,你可以选择使用eclipse默认的工作空间目录,也可以选择Tomcat安装目录下的webapps目录作为部署路径,或者自定义一个新的路径。

请注意,每次修改部署路径后,可能需要重新启动Tomcat服务器才能使更改生效。同时,确保所选的部署路径具有适当的读写权限,以便eclipse能够正确地将项目文件部署到该位置。

下面是正确的部署情况:

Lib下包含了maven引入的jar包

出错项目下面没有 lib 文件夹

询问GPT,lib目录没有复制可能的原因:在 Eclipse 中部署 Maven SpringMVC 项目时,如果 WEB-INF 目录下没有 lib 文件夹,这通常意味着 Maven 依赖并没有被正确地复制到部署目录中。这可能是由于以下几个原因造成的:

1.Maven 插件配置问题:确保你的 pom.xml 文件中配置了正确的 Maven 构建插件,比如 maven-war-plugin,并且这个插件被正确执行了。这个插件负责将项目打包成 WAR 文件,并应该包含将 Maven 依赖复制到 WEB-INF/lib 目录下的步骤。——其他项目正确,这条排除。

2.Eclipse Maven 集成问题:Eclipse 有时可能无法与 Maven 完全同步。你可以尝试以下操作:

右键点击项目 -> Maven -> Update Project,确保所有的 Maven 依赖都已经下载并正确配置。

检查 Eclipse 的 Maven 配置,确保使用了正确的 Maven 安装和 settings.xml 文件。

部署配置问题:在 Eclipse 中部署项目时,需要确保部署配置正确。检查服务器的部署设置,确保它指向了正确的 WAR 文件或项目目录,并且包含了所有必要的依赖。——target下文件齐全,这条排除。

3.手动复制依赖:如果上述方法都不奏效,你可以尝试手动将 Maven 依赖复制到 WEB-INF/lib 目录下。但这通常不是一个好的做法,因为它绕过了 Maven 的正常构建过程,可能会导致版本控制问题和不一致性。——尝试成功。

4.检查项目类型:确保你的 Eclipse 项目是一个 Web 项目,并且已经正确配置了 Web 部署描述符(通常是 web.xml 文件)。——这条排除

5.清理和重建项目:有时,简单地清理并重建项目可以解决部署问题。在 Eclipse 中,你可以通过右键点击项目 -> Maven -> Clean 来清理项目,然后再次构建。——这条排除

如果以上方法都不能解决问题,建议检查 Eclipse 的错误日志或控制台输出,看是否有更详细的错误信息可以帮助定位问题。同时,也可以尝试在命令行中使用 Maven 直接打包项目(使用 mvn package 命令),然后检查生成的 WAR 文件是否包含正确的依赖。如果命令行打包正常而 Eclipse 部署不正常,那么问题很可能出在 Eclipse 的 Maven 集成或部署配置上。

检查target文件夹,生成的内容是正确的:

手工复制 lib 文件夹后,正确运行。

比较两个项目的.classpath 文件,发现出错的项目

<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">

<attributes>

<attribute name="maven.pomderived" value="true"/>

</attributes>

</classpathentry>

中间少了一个属性:

<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>

修改后,重启 Eclispe ,然后就好了。

关键点有两个:1、打包方式不对,修改 pom.xml 2、项目有问题,修改 .classpath 文件,然后重启 sts-exam 程序。

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

因上精进,果上随缘

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值