RESTEasy - Не удалось найти программу чтения тела сообщения для типа: multipart/form-data

Вопрос

Разработка функции загрузки файлов с помощью RESTEasy, см. Следующий пример RESTEasy multipart file upload :

public class FileUploadForm {

    private byte[]data;

    @FormParam("file")
    public void setData(byte[]data) {
        this.data = data;
    }

   //...code omitted
}
@Path("/file")
public class UploadFileService {

    @POST
    @Path("/upload")
    @Consumes("multipart/form-data")
    public Response uploadFile(@MultipartForm FileUploadForm form) {
       //...code omitted
    }

}

Выше пример загрузки файла может скомпилировать без каких-либо ошибок. Тем не менее, он запрашивает следующее страшное сообщение об ошибке во время загрузки файла в развернутую службу.

сообщение об ошибке resteasy

HTTP Status 500 - Bad arguments passed to public javax.ws.rs.core.Response
com.mkyong.rest.UploadFileService.uploadFile(com.mkyong.rest.FileUploadForm)
( org.jboss.resteasy.spi.BadRequestException org.jboss.resteasy.spi.BadRequestException:
Could not find message body reader for type:
class com.mkyong.rest.FileUploadForm of content type: multipart/form-data;
boundary="---------------------------98942870323811" )

Решение

RESTEasy не может найти программу чтения тела сообщения для « multipart/form-data », она должна быть включена в « resteasy-multipart-provider.jar ».

Чтобы исправить это, убедитесь, что выполнены следующие 2 шага.

1. Объявлен resteasy-multipart-провайдер

Убедитесь, что объявлено « resteasy-multipart-provider.jar ». Смотрите пример Maven:

Файл: pom.xml

    <dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-multipart-provider</artifactId>
        <version>2.2.0.GA</version>
    </dependency>

2. mvn eclipse: eclipse -Dwtpversion = 2.0

Для проекта веб-приложения в Eclipse необходимо использовать следующую команду, чтобы убедиться, что все зависимости развернуты правильно.

mvn eclipse:eclipse -Dwtpversion=2.0

После этого проверьте ваш Eclipse « Web Deployment Assembly », убедитесь, что все необходимые зависимости включены.

  • Помните -Dwtpversion = 2.0 ** В Eclipse (веб-проект) классический «mvn eclipse: eclipse`» не может развернуть все зависимости, вместо этого вы должны использовать «mvn eclipse: eclipse -Dwtpversion = 2.0`«.

ссылка://тег/jax-rs/[jax-rs]ссылка://тег/resteasy/[resteasy]