Idea 使用 Maven 配置 Tomcat

本文详细介绍了如何在IntelliJ IDEA中配置Maven项目以使用Tomcat。内容包括设置Facets和Artifact,配置Tomcat的Application context,解决编译后WEB-INF/classes缺失问题,处理IDEA中jar包显示存在但无法找到的错误,以及原生启动Tomcat的方法。对于遇到这些问题的开发者,提供了实用的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

配置 Facets 和 Aritfact

Facets 用于配置 Module
Facets 内点击 “+”,Add -> Web,选择 Module:自动在根目录下创建 web 文件web\WEB-INF\web.xml

在这里插入图片描述

Artifact : Module 打包的方式,打包后的文件,在 Output directory 下生成

  • Web Application Exploded:以文件夹形式(War Exploded)发布项目
  • Web Application Archive,以 war 包的形式发布项目,每次编译会重新打包

配置 Tomcat


Application context:决定访问路径,可以为空(即 url 中不加项目名称)
注意 Deplyment 下的 Application context 是否和 Server 中的 Url 匹配,否则要输入如 /untitled1_Web_exploded 之类的,很麻烦

测试

<dependencies>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>
</dependencies>
@WebServlet(urlPatterns = "/qwe")
public class A extends HttpServlet {
  @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    response.getWriter().println("A run ......");
  }
}

WEB-INF 下的 classes

classpath 是 JVM 使用到的一个环境变量,执行 JVM 如何搜索 class 文件
Web 项目编译打包后,会将 classes 放入 WEB-INF 目录下,很多时候出现 404 的情况,检查下 WEB-INF 目录下是否存在 classes 文件
在这里插入图片描述

classes 内也就是 src/main/java 和 src/main/resources 下的文件

解决 out 下无 WEB-INF/classes 问题

IDEA创建Maven项目做Java Web时无WEB-INF/classes的问题
问题根源:IDE没有做Servlet的编译和复制,将IDEA项目的.iml文件中的下面一段删除:

 <component name="NewModuleRootManager" inherit-compiler-output="true">
    <exclude-output />
    <content url="file://$MODULE_DIR$" />
    <orderEntry type="inheritedJdk" />
    <orderEntry type="sourceFolder" forTests="false" />
  </component>

Idea lib 下的 jar包明明存在,却报jar包不存在

我的解决方式:删除iml文件、重启 idea

lib 包不存在

手动添加
在这里插入图片描述

原生启动 Tomcat 方式

如果实现找不出来是哪里出现错误,可以试试这种方式,也算是提供一种新的思路吧~在这里插入图片描述

手动编译 servlet

javac -cp javax.servlet-api-3.1.0.jar A.java

-cp:指定 jar 包路径
当前路径下一定要有 jar 包(这里是 javax.servlet-api-3.1.0.jar),不然会提示 error: package javax.servlet does not exist,当然,毕竟 jar 包不存在

另外,编译的 java 代码(这里为 A.java)内的 package 要删去,否则会提示找不到 A.class 这个类

找不到 lib

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值