web-dev-qa-db-ja.com

Jersey 2.17で@FormDataParamが見つかりません

私はWebサービスにかなり慣れていないので、基本的な例から始めました。これはファイルのアップロードに関連しています。非Maven開発者向けに、最新(2.17)バージョンのJerseyバンドルを使用しています。それはそれを述べています:

バンドルには、JAX-RS 2.0 API jar、すべてのコアJerseyモジュールjar、および必要なすべてのサードパーティの依存関係が含まれています

。問題は、この部分をコンパイルできないことです。

@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
    @FormDataParam("file") InputStream uploadedInputStream,
    @FormDataParam("file") FormDataContentDisposition fileDetail) {
    String uploadedFileLocation = "d://uploaded/" + fileDetail.getFileName();
    // save it
    writeToFile(uploadedInputStream, uploadedFileLocation);
    String output = "File uploaded to : " + uploadedFileLocation;
    return Response.status(200).entity(output).build();
}

のようだ @FormDataParam Jersey 2.17バンドルには存在しませんが、ドキュメントには記載されています。 2.17バンドルは不完全ですか?この問題を解決するにはどうすればよいですか?

21
Rasa

バンドルには、コアモジュール(およびその依存関係)のみが含まれます。残念ながら、Multipartはコアの一部ではありません。 この依存関係 (Maven)も必要です

<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-multipart</artifactId>
    <version>2.17</version>
</dependency

Mavenを使用していない場合、私が知ることができることから、このアーティファクトには他に1つの依存関係(バンドルにまだ含まれていない)のみがあり、それはmimepull-1.9.3です。

以下の両方のアーティファクトをダウンロードできます

32
Paul Samsotha