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

Resteasy POST操作报500错误,添加Jackson依赖后出现404求助

问题解决:Resteasy POST请求500转404错误排查

一、初始500错误原因及修复

org.jboss.resteasy.spi.BadRequestException: Could not find message body reader for type: class handler.tier.payload.Message of content type: application/json 这个错误是缺少Resteasy与Jackson绑定的适配依赖,仅引入jackson-mapper-asl不够,需要添加Resteasy专门的Jackson整合包,同时必须统一Resteasy版本避免冲突。

依赖调整(pom.xml)

  1. 统一所有Resteasy组件的版本,替换旧的resteasy-jaxrs依赖:
    <properties>
        <resteasy.version>3.6.3.Final</resteasy.version>
        <spring.version>2.5.6</spring.version>
    </properties>
    
    <dependencies>
        <!-- 统一版本的resteasy核心依赖 -->
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxrs</artifactId>
            <version>${resteasy.version}</version>
        </dependency>
    
        <!-- 添加Resteasy-Jackson绑定依赖,自动引入适配的Jackson组件 -->
        <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jackson-provider</artifactId>
            <version>${resteasy.version}</version>
        </dependency>
    
        <!-- 移除单独的jackson-mapper-asl依赖,避免版本冲突 -->
        <!-- 其他依赖保留,注意spring版本与Resteasy的兼容性 -->
    </dependencies>
    

二、添加依赖后404错误的排查与修复

404错误多由请求路径不匹配、资源未正确注册或代码语法错误导致,结合你的代码需调整以下几点:

1. 修复代码语法错误

TestController中返回字符串未闭合:

// 错误写法
return "IT WOX;
// 修正后
return "IT WORKS";

2. 解决资源注册冲突

你同时配置了resteasy.scan=true(自动扫描REST资源)和自定义HandlerApplication注册TestController,两种方式会冲突,导致资源未被正确加载,二选一即可:

方案一:保留自动扫描,移除HandlerApplication

确保TestController所在包能被扫描到,直接删除HandlerApplication类,依赖resteasy.scan=true自动注册资源。

方案二:关闭自动扫描,使用Application注册

修改web.xml,关闭自动扫描并指定自定义Application:

<context-param>
    <param-name>resteasy.scan</param-name>
    <param-value>false</param-value>
</context-param>
<!-- 添加自定义Application的全限定名 -->
<context-param>
    <param-name>javax.ws.rs.Application</param-name>
    <param-value>handler.tier.HandlerApplication</param-value>
</context-param>

3. 验证请求路径正确性

Postman请求需匹配完整路径:

  • Servlet映射为/spy/*,Controller的@Path("/pay"),完整请求路径为:POST http://localhost:端口/项目上下文/spy/pay
  • 请求头必须设置Content-Type: application/json,请求体示例:
    {
        "flag": true,
        "text": "test content"
    }
    

三、最终验证步骤

  1. 清理项目,重新编译打包,确保依赖无冲突
  2. 启动服务,检查日志是否有资源注册成功的提示
  3. 用Postman重新发送请求,验证返回是否正常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 09:41:02