RESTEasy - Nachrichtentextleser für Typ: Multipart/Form-Daten nicht gefunden

Frage

Datei-Upload-Funktion mit RESTEasy entwickeln, siehe folgendes Beispiel: RESTEasy-Multipart-Datei-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
    }

}

Das obige Beispiel zum Hochladen von Dateien kann ohne Fehler kompiliert werden. Während des Hochladens der Datei zum bereitgestellten Dienst wird jedoch die folgende beängstigende Fehlermeldung angezeigt.

resteasy-Fehlermeldung

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" )

Lösung

RESTEasy kann den Nachrichtentextleser für „ multipart/form-data “ nicht finden. Er sollte in „ resteasy-multipart-provider.jar “ enthalten sein.

Um dies zu beheben, vergewissern Sie sich, dass die folgenden 2 Schritte aktiviert sind.

1. Deklarierter Resteasy-Multipart-Provider

Stellen Sie sicher, dass " resteasy-multipart-provider.jar " deklariert ist. Siehe Maven-Beispiel:

Datei: 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

Für ein Webanwendungsprojekt in Eclipse müssen Sie den folgenden Befehl verwenden, um sicherzustellen, dass alle Abhängigkeiten ordnungsgemäß bereitgestellt werden.

mvn eclipse:eclipse -Dwtpversion=2.0

Überprüfen Sie anschließend Ihren Eclipse-Code " Web Deployment Assembly " und stellen Sie sicher, dass alle erforderlichen Abhängigkeiten enthalten sind.

  • Remember -Dwtpversion = 2.0 ** + In Eclipse (Webprojekt) kann der Klassiker "` mvn eclipse: eclipse '' nicht alle Abhängigkeiten bereitstellen, stattdessen sollten Sie '' mvn eclipse: eclipse -Dwtpversion = 2.0` "verwenden. .