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

Eclipse转ReST项目为Maven后Tomcat运行报415 Unsupported Media Type错误

问题原因及修复方案

1. 依赖版本冲突

当前pom中Jersey相关依赖版本不统一:jersey-container-servlet使用2.25.1版本,jersey-hk2使用2.28版本,跨版本混用会导致Jersey的参数解析、媒体类型匹配逻辑异常,这是项目转为Maven后才出现问题的核心诱因之一。
修复方案:将所有Jersey组件的版本统一,建议统一使用2.25.1版本,删除单独引入的jersey-hk2依赖即可,2.25.1版本的jersey-container-servlet已经包含适配的hk2实现,无需额外引入。

2. POST接口缺失请求媒体类型声明

当前POST接口仅声明了返回的媒体类型@Produces,没有声明可接收的请求媒体类型。使用@FormParam接收表单参数时,对应的请求Content-Type为application/x-www-form-urlencoded,必须显式在POST方法上添加@Consumes(MediaType.APPLICATION_FORM_URLENCODED)注解,否则Jersey无法匹配对应请求的媒体类型,就会返回415错误。
修改后的接口代码示例:

@POST
@Produces(MediaType.TEXT_HTML)
@Consumes(MediaType.APPLICATION_FORM_URLENCODED) // 新增该注解
@Path("/inputvalues")
public String getParamText(@FormParam("travel") String travel,
        @FormParam("start") String start,
        @FormParam("duration") String end, 
        @FormParam("party") String people) {
    // 原有逻辑保持不变
}

3. 可选排查项

完成上述两步后仍报错,可按顺序检查:

  • 确认web.xml中Jersey Servlet的jersey.config.server.provider.packages初始化参数值包含RestWeb类所在的包路径,保证接口能被正常扫描注册
  • 确认index.jsp中form表单的enctype属性没有被误设为multipart/form-data或application/json,普通表单提交默认就是application/x-www-form-urlencoded,无需额外修改
  • 确认请求路径符合Jersey Servlet映射规则:比如web.xml中Jersey Servlet的url-pattern为/rest/*,完整请求路径应为{上下文路径}/rest/error/inputvalues

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 12:36:00