java.lang.NoClassDefFoundError: симулировать / запрашивать $Body в feign при добавлении поддержки multipart / form-data

#multipartform-data #noclassdeffounderror #feign

#multipartform-данные #noclassdeffounderror #симулировать

Вопрос:

Я пытаюсь передать составной запрос через feign.

 @PostMapping(value = "{pathUri1}/{pathUri2}",consumes = MediaType.MULTIPART_FORM_DATA_VALUE,produces = MediaType.APPLICATION_JSON_VALUE)
ResponseEntity<BaseResponse<?>> uploadFileCall(@PathVariable(value = "pathUri1") String pathUri1, @PathVariable(value = "pathUri2") String pathUri2, @RequestPart(name = "file") MultipartFile file, @RequestParam Map<Object,Object> requestParam, @RequestHeader HttpHeaders httpHeaders);
  

это вызов службы.

 @Configuration
class MultipartSupportConfig {

    @Autowired
    ObjectFactory<HttpMessageConverters> messageConverters;

    @Bean
    @Primary
    @Scope("prototype")
    public Encoder feignFormEncoder() {
        return new SpringFormEncoder(new SpringEncoder(messageConverters));
    }
}
  

добавлена конфигурация кодировщика для multipart / form-data .

Я следил за этим https://github.com/OpenFeign/feign-form

Но я получаю hystrixRunTimeException , что вызвано из-за java.lang.NoClassDefFoundError: симулируйте / запрашивайте $Body ошибку.

Ответ №1:

Используйте версию feign-form-spring 3.4.1.

Gradle

 compile(group: 'io.github.openfeign.form', name: 'feign-form-spring', version: '3.4.1')
  

Maven

 <dependency>
        <groupId>io.github.openfeign.form</groupId>
        <artifactId>feign-form</artifactId>
        <version>3.4.1</version>
</dependency>
  

Проверьте требования https://github.com/OpenFeign/feign-form#requirements

Комментарии:

1. Я добавил к нему еще одну зависимость — feign-form-spring

Ответ №2:

Согласно документу open-feign на github, пожалуйста, обратите внимание на версии формы feign:

  • все версии feign-form до версии 3.5.0 работают с OpenFeign 9.* версии;
  • начиная с версии 3.5.0 feign-form, модуль работает с версиями OpenFeign 10.1.0 и выше.

Ответ №3:

Следующая конфигурация работает для меня:

     <dependency>
        <groupId>io.github.openfeign</groupId>
        <artifactId>feign-jackson</artifactId>
        <version>${feign.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
    <dependency>
        <groupId>io.github.openfeign</groupId>
        <artifactId>feign-httpclient</artifactId>
        <version>${feign.version}</version>
    </dependency>
  

Где:

<feign.version>11.0</feign.version>

<spring-cloud.version>Hoxton.SR3</spring-cloud.version>