首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到MessageBodyReader - RestEasy / Quarkus

找不到MessageBodyReader - RestEasy / Quarkus
EN

Stack Overflow用户
提问于 2022-09-06 00:02:06
回答 1查看 127关注 0票数 0

我不知道该怎么办才能修好它。访问localhost:8080/pets/findByStatusLocal时,将返回以下错误。

误差

错误id 9175b683-f00f-4a8d-9246-a30eb0f8865f-5,javax.ws.rs.ProcessingException: RESTEASY003145:无法找到内容类型应用程序/json和类型接口java.util.List的MessageBodyReader

Pet.java

代码语言:javascript
复制
package org.test;

public class Pet {

    private Long id;
    private String name;

    public Pet() {
        this(null, null);
    }

    public Pet(Long id, String name) {
        this.id = id;
        this.name = name;
    }

    
    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

application.properties

代码语言:javascript
复制
org.test.PetService/mp-rest/url=https://petstore.swagger.io/v2/
org.test.PetService/mp-rest/scope=javax.inject.Singleton

PetService.java

代码语言:javascript
复制
package org.test;
import java.util.List;
import java.util.concurrent.CompletionStage;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import org.eclipse.microprofile.rest.client.inject.RegisterRestClient;

@Path("/pet")
@RegisterRestClient
public interface PetService {

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("findByStatus")
    public List<Pet> findByStatus(@QueryParam("status") String status);

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("findByStatus")
  
  public CompletionStage<List<Pet>> findByStatusAsync(@QueryParam("status") String status);
}

PetResource.java

代码语言:javascript
复制
package org.test;

import java.util.List;
import java.util.concurrent.CompletionStage;

import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import org.eclipse.microprofile.rest.client.inject.RestClient;

@Path("/pets")
public class PetResource {

    @Inject
    @RestClient
    PetService petService;

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("findByStatusLocal")
    public List<Pet> methodname(@QueryParam("status") String status) {
        return petService.findByStatus(status);
    }

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @Path("findByStatusLocalAsync")
    public CompletionStage<List<Pet>> async(@QueryParam("status") String status) {
        return petService.findByStatusAsync(status);
    }
    
}

是源代码中的错误,还是项目配置中的错误?非常感谢

*我作了更正- pom.xml:

代码语言:javascript
复制
  <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-resteasy</artifactId>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-resteasy-jackson</artifactId>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-rest-client-jackson</artifactId>
    </dependency>
    <dependency>
      <groupId>io.quarkus</groupId>
      <artifactId>quarkus-rest-client</artifactId>
    </dependency>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-08 07:10:33

您需要quarkus-resteasy-reactive-jackson来写入(和读取) JSON对象。或者,您也可以使用-jsonb扩展。然而,在这种情况下,我强烈推荐Jackson,因为它提供了更多的功能。

因此,在pom.xml文件中添加:

代码语言:javascript
复制
<dependency>
  <groupId>io.quarkus</groupId>
  <artifactId>quarkus-resteasy-reactive-jackson</artifactId>
</dependency>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73615556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档