You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NetBeans中Tomcat 10部署Spring MVC项目访问/Demo路径返回404错误如何解决

问题根因

  • 最核心问题是*Tomcat 10不兼容javax.命名空间:Tomcat 10及以上版本全面迁移到Jakarta EE,所有Java EE相关包名从javax.*改为jakarta.*。你当前使用的Spring 5.3.9版本、javax相关依赖都基于旧的javax.*命名空间,在Tomcat 10上无法正常加载Servlet组件,导致DispatcherServlet根本没有启动,访问自然返回404。
  • JSP路径不匹配:你配置的视图解析器前缀是/WEB-INF/jsp/,但你的index.jsp直接放在项目根目录,没有放到WEB-INF/jsp文件夹下,就算DispatcherServlet正常启动,也找不到index视图对应的文件。
  • 配置冗余错误:applicationContext.xml中的<context:annocation-config />拼写错误,正确应为<context:annotation-config />,不过你用的是全注解配置,该xml实际未生效,不会直接导致404。
  • 代码存在无效导入:DispatcherSelvetIntializer.java导入了无关的javax.swing.AbstractAction,WebApplicationContextConfig导入了无关的com.sun.org.apache.bcel.internal.generic.AALOAD,属于冗余代码,不直接影响运行。

修复方案

方案一(推荐,适配Tomcat 10):升级依赖到支持Jakarta EE的版本

  1. 升级Spring版本到6.0及以上,Spring 6开始原生支持jakarta.*命名空间,同时需要将JDK版本升级到17及以上(Spring 6最低要求JDK 17)。
  2. 替换pom.xml中所有javax相关依赖为jakarta版本:
<dependencies>
    <dependency>
        <groupId>jakarta.platform</groupId>
        <artifactId>jakarta.jakartaee-web-api</artifactId>
        <version>9.1.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>6.0.11</version>
    </dependency>
    <dependency>
        <groupId>jakarta.servlet.jsp.jstl</groupId>
        <artifactId>jakarta.servlet.jsp.jstl-api</artifactId>
        <version>3.0.0</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.web</groupId>
        <artifactId>jakarta.servlet.jsp.jstl</artifactId>
        <version>3.0.1</version>
    </dependency>
</dependencies>
  1. 替换所有代码中javax.servlet相关导入为jakarta.servlet。
  2. 在src/main/webapp下创建WEB-INF/jsp目录,将index.jsp移动到该目录下。
  3. 修改maven-compiler-plugin的编译版本为17:
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.11.0</version>
    <configuration>
        <source>17</source>
        <target>17</target>
    </configuration>
</plugin>

方案二(零代码修改,快速兼容):降级Tomcat版本

直接将Tomcat 10替换为Tomcat 9.x版本,Tomcat 9仍基于javax.*命名空间,和你当前所有依赖完全兼容,不需要修改代码和配置,只需要额外将index.jsp移动到WEB-INF/jsp目录下即可正常运行。

内容的提问来源于stack exchange,提问作者Minh Khôi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 09:24:03