【问题标题】:Jersey File Upload Service missing dependency errorJersey 文件上传服务缺少依赖项错误
【发布时间】:2013-09-27 20:10:56
【问题描述】:

我正在尝试制作文件上传 RESTful 服务。但它正在吐出一个依赖错误。

这是我的代码:

    @ApiOperation(
        value = "Upload File.", 
        notes = "Uploads and stores user files to the server." )
@ApiResponses(value = {
        @ApiResponse(code = 403, message = "User not authorized to upload files."),
        @ApiResponse(code = 500, message = "Server error")})
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
public Response uploadFile(
        @ApiParam( value = "File", required = false)
        @FormDataParam("file") InputStream uploadInputStream,
        @ApiParam( value = "File Data", required = false)
        @FormDataParam("file") FormDataContentDisposition fileDetail
        ){
    return Response.ok("Test new endpoint").build();
}

我的 pom.xml 中的 pom 中确实有匹配的版本或球衣和多部分

        <dependency>
        <groupId>com.sun.jersey.contribs</groupId>
        <artifactId>jersey-multipart</artifactId>
        <version>${jersey.version}</version>
    </dependency>

    <!-- jersey -->    
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-server</artifactId>
        <version>${jersey.version}</version>
    </dependency>

这是正在产生的错误

SEVERE: Missing dependency for method public javax.ws.rs.core.Response com.lotame.ws.api.resources.FileResource.uploadFile(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition) at parameter at index 0
SEVERE: Missing dependency for method public javax.ws.rs.core.Response com.lotame.ws.api.resources.FileResource.uploadFile(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition) at parameter at index 1
SEVERE: Method, public javax.ws.rs.core.Response com.lotame.ws.api.resources.FileResource.uploadFile(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition), annotated with POST of resource, class com.lotame.ws.api.resources.FileResource, is not recognized as valid resource method.

任何建议将不胜感激!

【问题讨论】:

  • 对于那些感兴趣的人,上述问题不是问题。在这个项目中,我还使用 swagger 进行 API 文档/测试,而 @ApiParam() 导致了冲突。我不知道为什么,如果有人对此有解释,请告诉我!

标签: java rest jersey


【解决方案1】:

此异常是由围绕响应参数 (@ApiParam(...)) 的一些 Swaggers 注释引起的。我不确定他们为什么会导致这个问题,我相信这是因为 Swagger 对复杂对象作为参数的支持有限。

删除 Swagger ApiParam 符号已解决问题,但只会导致无法编辑这些参数的文档。

【讨论】:

  • 我今天使用 jersey (1.19)、jaxrs、guice 遇到了同样的问题。我尝试使用与swagger petstore sample 完全相同的代码,但没有成功:(
  • 哎呀我使用的是 swagger UI 最新版本,但是 swagger core 1.3 而不是 1.5 !它可以工作(对于InputStreamFormDataContentDisposition 参数没有@ApiParam)...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-02-28
  • 1970-01-01
  • 2014-12-11
  • 2020-08-17
  • 2021-03-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多