Tomcat内嵌启动时找不到Web应用的路径解决过程

 更新时间:2025年11月11日 11:35:11   作者:夫唯不争,故无尤也  
如果Tomcat找不到web项目,可能是因为项目部署不正确或者配置有误,这篇文章主要介绍了Tomcat内嵌启动时找不到Web应用的路径的解决过程,文中通过代码介绍的非常详细,需要的朋友可以参考下

发现问题

在使用Tomcat 内嵌启动时找不到 Web 应用的路径,如下页面所显示的webapp路径是我们需要去查找的路径,但在运行时出现报错“Caused by: java.lang.IllegalArgumentException: The directory specified by base and internal path [E:\program\java学习\target\classes\com\itranswarp\learnjava\servlet] does not exist.”

这个错误信息其实很典型,说明——Tomcat 内嵌启动时找不到 Web 应用的路径(src/main/webapptarget/classes
看似报了很多行,其实核心原因就是一句:

Caused by: java.lang.IllegalArgumentException: The directory specified by base and internal path [E:\program\java学习\target\classes\com\itranswarp\learnjava\servlet] does not exist.

也就是:Tomcat 启动时被告知要加载一个 Web 资源目录,但这个目录在磁盘上根本不存在

一、错误的根本原因

这类报错通常由以下几种情况造成:

  1. 没有编译过项目target/classes 目录还没生成
    也就是说你没有运行过:

    mvn clean package
    

    或者 IDEA 的 Build 没有执行。

  2. src/main/webapp 路径缺失
    内嵌 Tomcat 默认会把 src/main/webapp 作为 Web 根目录。
    如果这个目录不存在,它会抛出:

    NoSuchFileException: ...\src\main\webapp
    
  3. 你的 Main.java 设置了错误的路径
    很多人在 Main.java 里写了类似:

    tomcat.addWebapp("/", new File("src/main/webapp").getAbsolutePath());
    

    但如果当前工作路径不对(例如从 IDEA 外部运行 jar),
    那么这个相对路径就指向一个根本不存在的目录。

二、标准解决流程

1. 确认项目结构是否正确

标准 Maven Web 项目应是这样的:(应该保证只打开这一个工程文件,不要打开多个工程文件,即以这一个工程作为根目录再IDEA中打开

src/
 ├── main/
 │   ├── java/
 │   │    └── com/itranswarp/learnjava/servlet/...
 │   ├── resources/
 │   └── webapp/
 │        └── index.jsp
 └── test/

如果 webapp 不存在,请手动创建:

src/main/webapp

哪怕暂时空着,也可以先放一个 index.jsp 以防启动时报错。

2. 编译项目

在项目根目录下执行:

mvn clean package

这一步会生成:

target/classes/com/itranswarp/learnjava/servlet/tomcat_servlet.class

如果 target/classes 仍为空,那说明 Maven 的 <build> 配置有问题(我可以帮你改)。

3. 修改Main.java路径引用

确保 Main 文件使用绝对路径,而不是相对路径。

推荐写法:

package com.itranswarp.learnjava.servlet;

import org.apache.catalina.startup.Tomcat;

import java.io.File;

public class Main {
    public static void main(String[] args) throws Exception {
        Tomcat tomcat = new Tomcat();
        tomcat.setPort(8080);

        // 项目根路径(自动找到 webapp)
        String webappDirLocation = new File("src/main/webapp").getAbsolutePath();
        System.out.println("Webapp dir: " + webappDirLocation);

        tomcat.addWebapp("/", webappDirLocation);

        tomcat.start();
        tomcat.getServer().await();
    }
}

👉 如果你是通过 java -jar target/xxx.jar 启动的,那就不能用 src/main/webapp

因为打包后 JAR 中没有这个目录。此时你应使用:

File webappDir = new File("target/classes/webapp");

或者更简单——不指定 webapp,直接注册 Servlet:

tomcat.addContext("/", new File(".").getAbsolutePath());

4. IDEA 运行配置

  • 打开菜单:Run → Edit Configurations

  • 在 "Working directory" 一栏,设置为项目根目录(不是 src
    否则 Tomcat 会找不到路径。

总结

到此这篇关于Tomcat内嵌启动时找不到Web应用路径解决过程的文章就介绍到这了,更多相关Tomcat内嵌启动找不到Web路径内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Eclipse添加Tomcat Server配置的方法步骤

    Eclipse添加Tomcat Server配置的方法步骤

    这篇文章主要介绍了Eclipse添加Tomcat Server配置的方法步骤,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • Win7系统下tomcat7.0配置教程

    Win7系统下tomcat7.0配置教程

    这篇文章主要为大家详细介绍了Windows7系统下tomcat7.0配置教程,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • Tomcat 与 maven 的安装与使用教程

    Tomcat 与 maven 的安装与使用教程

    这篇文章主要介绍了Tomcat 与 maven 的安装与使用,Tomcat HTTP 服务器,按照 HTTP 协议的格式来解析请求,调用用户指定的相关代码,并且按照 HTTP 响应的格式来构造返回数据,需要的朋友可以参考下
    2022-06-06
  • Tomcat 7.0多端口配置详解

    Tomcat 7.0多端口配置详解

    这篇文章主要介绍了Tomcat 7.0多端口配置详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06
  • Tomcat安装配置方法图文教程

    Tomcat安装配置方法图文教程

    这篇文章主要为大家详细介绍了Tomcat安装配置方法图文教程,java环境变量如何配置,Eclipse安装配置方法图文教程 ,为大家分享了三个教程,感兴趣的小伙伴们可以参考一下
    2016-06-06
  • 一文教你怎么选择Tomcat对应的JDK版本

    一文教你怎么选择Tomcat对应的JDK版本

    这篇文章主要给大家截介绍了怎么选择Tomcat对应的JDK版本,如果不知道Tomcat的哪个版本应该对应哪个版本的JDK,可以参考借鉴本文,对大家的学习有一定的帮助
    2023-10-10
  • 配置tomcat的图文教程

    配置tomcat的图文教程

    本文主要介绍了配置tomcat的图文教程,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-05-05
  • Tomcat启动核心流程示例详解

    Tomcat启动核心流程示例详解

    这篇文章主要为大家介绍了Tomcat启动核心流程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-08-08
  • Tomcat中配置Context的方法示例

    Tomcat中配置Context的方法示例

    Tomcat中的Context是管理Web应用的核心组件,负责启动、停止和重新加载应用,它包含Web应用的根目录、配置文件和上下文参数,配置Context可以通过编辑server.xml或创建描述文件来完成,推荐使用描述文件以实现动态管理
    2024-11-11
  • HBuilderX配置tomcat外部服务器查看编辑jsp界面的方法详解

    HBuilderX配置tomcat外部服务器查看编辑jsp界面的方法详解

    这篇文章主要介绍了HBuilderX配置tomcat外部服务器查看编辑jsp界面的方法,本文通过实例图文相结合给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10

最新评论