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

Tomcat 9.0.71实例化Servlet类时出现Status 500错误求助

解决Servlet实例化时的Status 500错误(java.lang.NoSuchMethodException)

问题根源

报错java.lang.NoSuchMethodException: ronit.hello<init>的核心原因是你的Servlet类hello使用了默认的包访问权限,Tomcat的Servlet容器无法通过反射实例化该类:反射机制要求类必须是public权限,且拥有可被外界访问的无参构造方法(你未显式定义构造方法,默认无参构造方法的权限与类一致,为包私有,容器无法调用)。

修复步骤

  1. 将Servlet类的访问修饰符改为public,确保容器能访问并实例化它
  2. 遵循Java命名规范,将类名改为首字母大写的Hello(避免后续潜在问题)

修正后的Servlet代码

package ronit;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.*;

@WebServlet("/hello")
public class Hello extends HttpServlet{
    static final long serialVersionUID = 35335L;

    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse res) throws IOException {
        PrintWriter p = res.getWriter();
        p.println("Hello World");
    }
}

额外说明

  • 若项目存在上下文路径,可将HTML表单的action属性改为"${pageContext.request.contextPath}/hello",避免路径匹配问题(当前报错与路径无关,为可选优化)
  • 修改代码后重启Tomcat服务器,重新部署项目即可解决该500错误

内容的提问来源于stack exchange,提问作者Ronit Pandey

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 01:38:10