IDEA创建Tomcat Web应用,启动访问出现500

文章描述了一位开发者在IDEA2022.3.1版本中使用Tomcat9.0.73创建Web应用时遇到500错误的问题。他们创建了一个servletdemo类并配置了web.xml,但访问/h路径时出现500错误,且偶尔变为404。解决方案包括将项目结构中的servlet-api库添加到依赖,并将servlet的import语句从jakarta替换为javax。应用这些更改后,问题得到解决,可以正常访问/h路径。

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

IDEA创建Tomcat Web应用,启动访问出现500

IDEA版本2022.3.1 ------ Tomcat版本:9.0.73

前几日创建了一个Javaweb的项目:
在这里插入图片描述
然后创建了一个servletdemo类:

package com.example.demo6;

import jakarta.servlet.*;

import java.io.IOException;

public class servletdemo implements Servlet {
    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

    }

    @Override
    public ServletConfig getServletConfig() {
        return null;
    }

    @Override
    public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {

    }

    @Override
    public String getServletInfo() {
        return null;
    }

    @Override
    public void destroy() {

    }
}

web.xml对应代码:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="https://jakarta.ee/xml/ns/jakartaee https://jakarta.ee/xml/ns/jakartaee/web-app_5_0.xsd"
         version="5.0">
    <servlet>
        <servlet-name>servletdemo</servlet-name>
        <servlet-class>com.example.demo6.servletdemo</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>servletdemo</servlet-name>
        <url-pattern>/h</url-pattern>
    </servlet-mapping>
</web-app>

结果运行时访问/h路径时出现了500错误,刷新一下又变成404

在这里插入图片描述在这里插入图片描述
怎么解决呢?

1.打开项目结构

在这里插入图片描述

2.点击库,找到Tomcat目录下lib里的 servlet-api 添加进去:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

之后点击应用,确定。
3. 将servlet中的import jakarta.servlet.*;改成 import javax.servlet.*;

在这里插入图片描述

访问/h不会报错,问题解决

在这里插入图片描述

当你在 IDEA 中配置并运行 Tomcat 后看到“1099”,这通常是因为端口冲突引起的。Tomcat 默认会占用一些特定的端口,例如 8080(HTTP)、8005(Shutdown Port)以及 1099(JMX 端口)。如果这些端口中任何一个已经被其他程序占用,则 Tomcat 可能无法正常启动,并提示相应的错误信息。 以下是可能导致该现象的原因及解决办法: ### 原因分析: 1. **端口已被占用**:当系统中存在另一个服务正在使用相同的端口号时,就会发生冲突。 2. **JNDI/RMI 配置问题**:某些情况下,Tomcat 的 JNDI 或 RMI 功能需要绑定到 1099 端口,默认设置可能与此有冲突。 --- ### 解决方案: #### 方法一:更改 Tomcat 端口 进入 `server.xml` 文件路径下修改相关端口号: ```xml <Server port="8005" shutdown="SHUTDOWN"> ``` 将上述代码片段中的 `port=8005` 改为你未使用的端口号,比如改为 `7005`。 同时检查 HTTP 连接器部分是否也发生了类似情况: ```xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" /> ``` 如果是 1099 被占用了,可以在 server.xml 搜索是否有相关的 `<Connector>` 标签引用了这个值然后调整它即可。 #### 方法二:查找并关闭占用端口的服务 通过命令行检测哪些进程绑定了目标端口(如 Windows 下可以执行以下步骤找到并结束那个任务): ```bash netstat -ano | findstr :1099 taskkill /PID <PID> /F ``` 最后重启 IDE 和服务器验证解决方案有效性。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值