未找到Java类型类com.sun.jersey.multipart.FormDataMultiPart和MIME媒体类型multipart / form-data

时间:2014-01-10 04:49:55

标签: jersey tomcat7 multipartform-data multipart

我在tomcat日志中看到以下错误...

  

错误c.s.j.spi.container.ContainerRequest - 一个消息正文阅读器   Java类com.sun.jersey.multipart.FormDataMultiPart和Java类型   class com.sun.jersey.multipart.FormDataMultiPart和MIME媒体类型   找不到multipart / form-data。注册邮件正文读者   与MIME媒体类型兼容的是:    / - > com.sun.jersey.core.impl.provider.entity.FormProvider com.sun.jersey.core.impl.provider.entity.StringProvider
  com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
  com.sun.jersey.core.impl.provider.entity.FileProvider
  com.sun.jersey.core.impl.provider.entity.InputStreamProvider
  com.sun.jersey.core.impl.provider.entity.DataSourceProvider
  com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider $一般   com.sun.jersey.core.impl.provider.entity.ReaderProvider
  com.sun.jersey.core.impl.provider.entity.DocumentProvider
  com.sun.jersey.core.impl.provider.entity.SourceProvider $ StreamSourceReader   com.sun.jersey.core.impl.provider.entity.SourceProvider $ SAXSourceReader   com.sun.jersey.core.impl.provider.entity.SourceProvider $ DOMSourceReader   com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider $一般   com.sun.jersey.json.impl.provider.entity.JSONArrayProvider $一般
  com.sun.jersey.json.impl.provider.entity.JSONObjectProvider $一般
  com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider
  com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider $一般   com.sun.jersey.core.impl.provider.entity.XMLListElementProvider $一般   com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider $一般   com.sun.jersey.core.impl.provider.entity.EntityHolderReader
  com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider $一般   com.sun.jersey.json.impl.provider.entity.JSONListElementProvider $常规


在客户端,我看到以下消息:

  

POST https://dev.project.org/upload返回的响应状态为415   不支持的媒体类型。


我已经google了,建议是需要jersey-multipart.jar和mimepull.jar作为依赖项。我在build.gradle中有以下依赖:

  

编译'com.sun.jersey.contribs:jersey-multipart:1.18'

在tomcat(Apache Tomcat / 7.0.47)上打包和部署应用程序后,我看到 jersey-multipart-1.18.jar mimepull-1.9.3.jar 位于 app / WEB-INF / lib 文件夹中。


以下是我的服务器端代码:

@POST
  @Consumes("multipart/form-data")
  @Path("/v2/upload")
  public Response uploadV2(FormDataMultiPart multipart) {

      logger.info("**POST /v2/upload");

      return Response.ok("success!").build();

  }

我在服务器端和客户端仍然遇到相同的错误。任何帮助表示赞赏。 感谢。

2 个答案:

答案 0 :(得分:4)

你只需要将mimepull.jar添加到你的lib

或与Maven

<dependency> <groupId>org.jvnet.mimepull</groupId> <artifactId>mimepull</artifactId> <version>1.9.5</version> </dependency>

答案 1 :(得分:0)

我也得到了同样的行为,收到了415 Unsupported Media Type的回复。如果我的输入参数是一个String,我可以点击路径。一旦我将param更改为FormDataMultiPart,我就会得到415.为我解决的问题是确保我的com.sun.jersey包的版本相同。

使用maven:

    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-core</artifactId>
        <version>1.18.1</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-json</artifactId>
        <version>1.18.1</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>1.18.1</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-servlet</artifactId>
        <version>1.18.1</version>
    </dependency>
    <dependency>
        <groupId>com.sun.jersey.contribs</groupId>
        <artifactId>jersey-multipart</artifactId>
        <version>1.18.1</version>
    </dependency>

jersey-multipart的任何不匹配都会给我提到上述行为。