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

运行Maven项目后无法查看Tomcat服务器状态,求排查帮助

Tomcat控制台无状态输出问题排查

代码逻辑错误修正

你的App类存在执行顺序错误,导致后续配置代码无法运行,自然看不到Tomcat状态日志。原代码:

package com.vikasreddy.springweb.MavenWebApp;

import org.apache.catalina.Context;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.startup.Tomcat;
import jakarta.servlet.Servlet;

public class App 
{
    public static void main( String[] args ) throws LifecycleException
    {
        System.out.println( "Hello World!" );
        Tomcat tomcat = new Tomcat();
        tomcat.start();
        tomcat.getServer().await();
        Context context = tomcat.addContext(" ", null);
        Tomcat.addServlet(context, "h1", (Servlet) new HelloServlet());
        context.addServletMappingDecoded("/hello", "h1");
    }
}

问题出在tomcat.start()和await()调用后,Tomcat进入阻塞等待状态,后面的Context、Servlet配置代码根本不会执行。调整顺序后:

package com.vikasreddy.springweb.MavenWebApp;

import org.apache.catalina.Context;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.startup.Tomcat;
import jakarta.servlet.Servlet;

public class App 
{
    public static void main( String[] args ) throws LifecycleException
    {
        System.out.println( "Hello World!" );
        Tomcat tomcat = new Tomcat();
        // 先完成上下文与Servlet配置
        Context context = tomcat.addContext("", null);
        Tomcat.addServlet(context, "h1", (Servlet) new HelloServlet());
        context.addServletMappingDecoded("/hello", "h1");
        // 再启动Tomcat并进入等待状态
        tomcat.start();
        tomcat.getServer().await();
    }
}

Eclipse环境排查步骤

  • 确认运行方式:你是直接运行App的main方法启动嵌入式Tomcat,还是通过Servers标签启动独立Tomcat?两种方式完全独立,若用Servers启动,需将项目部署到服务器,而非运行自己的main方法。
  • 切换控制台窗口:点击Eclipse控制台右上角的「Display Selected Console」按钮,确认是否切换到了对应Tomcat控制台(Servers启动)或Java应用控制台(main方法启动)。
  • 调整日志级别:打开Tomcat安装目录下的conf/logging.properties,将org.apache.catalina.level设为INFO,避免级别过高过滤状态日志。
  • 检查Maven依赖:确保pom.xml已引入嵌入式Tomcat相关依赖,示例:
<dependencies>
    <dependency>
        <groupId>org.apache.tomcat.embed</groupId>
        <artifactId>tomcat-embed-core</artifactId>
        <version>10.1.15</version> <!-- 匹配你的Tomcat版本 -->
    </dependency>
    <dependency>
        <groupId>jakarta.servlet</groupId>
        <artifactId>jakarta.servlet-api</artifactId>
        <version>6.0.0</version>
        <scope>provided</scope>
    </dependency>
</dependencies>
  • 排查端口冲突:若Tomcat启动失败,可能是默认8080端口被占用。可在代码中指定其他端口:
tomcat.setPort(8081);

内容的提问来源于stack exchange,提问作者1DS18CS171_ vikas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 23:47:35