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

Eclipse实现Servlet接口时注解生成URL异常问题求助

问题分析与解决方法

问题详情

  • 项目环境:Eclipse中名为firstwebsite的Web项目,使用Tomcat 9服务器
  • 代码情况:在src/main/java默认包下创建了直接实现Servlet接口的impSer类,代码如下:
import java.io.IOException;

import javax.servlet.Servlet;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;

@WebServlet("/impSer")
public class impSer implements Servlet {
     private transient ServletConfig config;

        @Override
        public void init(ServletConfig config) throws ServletException {
            this.config = config;
        }

        @Override
        public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
            System.out.println("Hello world");
        }

        @Override
        public void destroy() {
            System.out.println("h");
        }

        @Override
        public ServletConfig getServletConfig() {
            return this.config;
        }

        @Override
        public String getServletInfo() {
            return "TheServletInter";
        }
}
  • 异常现象:运行时Eclipse自动生成的URL为http://localhost:8080/firstwebsite/WEB-INF/classes/impSer.java,触发404错误;手动输入注解指定的正确URLhttp://localhost:8080/firstwebsite/impSer可正常运行
  • 特殊情况:继承GenericServlet或HttpServlet创建Servlet时,注解方式运行完全正常,仅直接实现Servlet接口时出现此问题

解决步骤

1. 修正Eclipse服务器运行配置

  • 右键项目 → Run As → Run Configurations
  • 在左侧列表找到Apache Tomcat下的对应服务器实例,点击进入配置页面
  • 切换到Arguments标签,在VM arguments的末尾添加以下参数:
    -Dorg.eclipse.jst.jsp.core.translator.source=2.3
    
  • 保存配置后重启Tomcat服务器,再重新运行Servlet

2. 手动指定运行的Servlet路径

  • 右键impSer.java文件 → Run As → Run on Server
  • 在弹出的窗口中点击Next,选择对应的Tomcat服务器
  • 在后续页面中,找到URL输入栏,手动填写http://localhost:8080/firstwebsite/impSer
  • 点击Finish启动运行

3. 确认项目Servlet版本配置

  • 检查src/main/webapp/WEB-INF下的web.xml文件(若不存在则新建),确保Servlet版本为3.0及以上(Tomcat 9支持Servlet 4.0),配置示例:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0"
             metadata-complete="false">
    </web-app>
    
  • metadata-complete="false"用于确保Tomcat能够扫描并识别Servlet注解

原因说明

Eclipse对直接实现Servlet接口的类,在自动生成运行URL时,没有正确识别其作为Servlet的身份,误将其当作普通Java源文件处理,因此指向了源文件的编译路径。通过添加VM参数修正Eclipse的Servlet识别逻辑,或手动指定正确的Servlet访问路径,即可解决此问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 11:48:20