programing

스프링 부트 응용 프로그램:유형의 반환 값에 대한 변환기를 찾을 수 없습니다.

stoneblock 2023. 7. 18. 21:29

스프링 부트 응용 프로그램:유형의 반환 값에 대한 변환기를 찾을 수 없습니다.

나는 간단한 글을 쓰고 있습니다.REST API이 Spring-Boot 튜토리얼에 따라.로컬 개발 시스템에서(Ubuntu 15.04그리고.Windows 8.1) 모든 것이 매력적으로 작동합니다.

나는 오래된32-bit Ubuntu 12.04 LTS구축하려는 서버가 배치되어 있습니다.REST서비스.

시작 로그는 괜찮지만 보내자마자GET에의 요청./user/{id}엔드포인트, 다음 오류가 발생합니다.

java.lang.IllegalArgumentException: No converter found for return value of type: class ch.gmazlami.gifty.models.user.User

그리고 스택 트레이스를 따라 내려갑니다.

java.lang.IllegalArgumentException: No converter found for return value of type: class java.util.LinkedHashMap

전체 스택 추적이 여기에 게시됩니다.

이 오류를 참조하여 몇 가지 답을 알아봤지만, 스프링 부트를 사용하고 있기 때문에 문제에 해당되지 않는 것 같습니다.xml원하는 대로 구성합니다.

영향을 받는 컨트롤러는 다음과 같습니다.

    @RequestMapping(value = "/user/{id}", method = RequestMethod.GET)
public ResponseEntity<User> getUser(@PathVariable Long id){
    try{
        return new ResponseEntity<User>(userService.getUserById(id), HttpStatus.OK);
    }catch(NoSuchUserException e){
        return new ResponseEntity<>(HttpStatus.NOT_FOUND);
    }
}

어떤 도움이라도 주시면 대단히 감사하겠습니다.정확히 똑같은 것들이 다른 기계에서도 완벽하게 작동하기 때문에 매우 이상합니다.

이는 단 하나의 리소스(한 가지 방법)에서만 발생했으며 그 이유를 이해할 수 없었습니다.동일한 패키지의 클래스 내 모든 메서드, 동일한 주석, 동일한 호출ResponseEntity.ok(...)등이 방금 작동했습니다.

하지만 이것은 아닙니다.

제가 POJO 수업에서 게터를 생성하는 것을 잊어버린 것으로 밝혀졌습니다!

제가 그것들을 추가하자마자 그것은 작동했습니다.

언젠가 누군가를 구할 수 있기를 바랍니다.

pom.xml 및 mvc-syspatcher-servlet.xml 파일을 변경해야 합니다.다음 종속 항목을 pom.xml에 추가합니다.

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.4.3</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.4.3</version>
</dependency>

mvc-sublet.xml을 업데이트합니다.

<mvc:annotation-driven>
     <mvc:message-converters>
            <bean class="org.springframework.http.converter.StringHttpMessageConverter"/>
            <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"/>
   </mvc:message-converters>
</mvc:annotation-driven>

이는 "빌드" 호출을 잊어버린 경우에 발생합니다.

return ResponseEntity.status(HttpStatus.BAD_REQUEST);

다음과 같아야 합니다.

return ResponseEntity.status(HttpStatus.BAD_REQUEST).build();

제가 이 문제에 직면한 이유는 제가 생략했기 때문입니다.Getters그리고.Setters방법.

나머지 답변에 추가하자면, 방법은 공개적이어야 합니다.

IDE는 메소드가 "패키지 전용"일 수 있다고 플래그를 지정하여 선언의 "공개" 부분을 제거하도록 촉구했습니다(제가 어리석게도 그렇게 했습니다).

추가했습니다.public내 방법에 따라 문제를 해결했습니다.

저는 IntelliJ Idea와 자동으로 생성된 Getter와 Setter를 사용하고 있었습니다.내가 부울 필드를 가지고 있었기 때문에success게터는 이름이 붙여졌습니다.isSucccess()이름을 바꿨습니다.getSuccess()그리고 오류는 사라졌습니다.

언급URL : https://stackoverflow.com/questions/33832735/spring-boot-application-no-converter-found-for-return-value-of-type