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

如何修复Tomcat 10中java.lang.NoSuchMethodException: Servlets.MyServlet.<init>()错误

解决Tomcat 10下Servlet报NoSuchMethodException的问题

问题根源

java.lang.NoSuchMethodException: Servlets.MyServlet.<init>() 这个错误的核心是:Tomcat容器无法找到你的Servlet类的无参构造函数,导致无法实例化Servlet对象。

解决步骤

1. 检查并添加无参构造函数

如果你的MyServlet类显式定义了带参数的构造函数(比如接收配置参数的构造),Java会自动取消默认的无参构造,这时候必须手动添加一个无参构造函数。

错误示例(缺少无参构造):

package Servlets;

import jakarta.servlet.http.HttpServlet;

public class MyServlet extends HttpServlet {
    // 显式定义带参构造,覆盖了默认无参构造
    public MyServlet(String initParam) {
        // 自定义初始化逻辑
    }
}

修正后(添加无参构造):

package Servlets;

import jakarta.servlet.http.HttpServlet;

public class MyServlet extends HttpServlet {
    // 必须添加的无参构造
    public MyServlet() {
        // 可以留空,也可以写通用初始化代码
    }

    // 带参构造可保留(如果需要)
    public MyServlet(String initParam) {
        // 自定义初始化逻辑
    }
}

2. 确保Servlet类是public修饰

MyServlet类必须用public修饰,不能是包私有(默认修饰符)、protected或private,否则Tomcat容器无法访问并实例化它。

3. 确认Servlet API依赖包正确

Tomcat 10.x基于Jakarta EE 9+,Servlet API的包名从旧的javax.servlet改为了jakarta.servlet。如果你的代码里还在导入javax.servlet.*的类,会导致容器无法识别这是一个合法的Servlet,进而触发实例化失败。

正确的导入示例:

import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
// 如果用注解的话,导入jakarta的注解
// import jakarta.servlet.annotation.WebServlet;

4. 清理并重新部署项目

修改代码后,务必:

  • 重新编译项目,确保生成的class文件是最新的
  • 清理Tomcat的work目录(路径一般为Tomcat安装目录/work/Catalina/localhost/你的项目名),删除旧的缓存文件
  • 重启Tomcat并重新部署项目

额外检查(web.xml配置场景)

如果是手动在web.xml配置Servlet,要确保<servlet-class>的路径完全匹配你的Servlet类的包名+类名,比如:

<web-app xmlns="https://jakarta.ee/xml/ns/jakartaee"
         version="5.0">
    <servlet>
        <servlet-name>MyServlet</servlet-name>
        <servlet-class>Servlets.MyServlet</servlet-class> <!-- 包名和类名必须准确 -->
    </servlet>
    <servlet-mapping>
        <servlet-name>MyServlet</servlet-name>
        <url-pattern>/myServlet</url-pattern>
    </servlet-mapping>
</web-app>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 22:04:53