当前位置: 首页 > 面试题库 >

无法在Jersey中实现简单的文件上传-使用资源POST注释,类不被识别为有效的资源方法。无法使用”

王辉
2023-03-14
问题内容

无法使用Jersey实现简单的文件上传。缺少应用程序引导时引发的依赖项错误:

The following errors and warnings have been detected with resource and/or provider classes:
  SEVERE: Missing dependency for method public javax.ws.rs.core.Response com.foo.MyResource.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.foo.MyResource.uploadFile(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition) at parameter at index 1
  SEVERE: Method, public javax.ws.rs.core.Response com.foo.uploadFile(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition), annotated with POST of resource, class com.foo.FS2Resource, is not recognized as valid resource method.
unavailable
com.sun.jersey.spi.inject.Errors$ErrorMessagesException
    at com.sun.jersey.spi.inject.Errors.processErrorMessages(Errors.java:170)

将输入参数映射到REST服务似乎存在问题?我已经阅读了文档并遵循了几个示例,但是我并没有偏离这些示例。

这是代码:

@Path("v1/")
public class FileUploadResource {


    @POST
    @Path("upload")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    @Produces({MediaType.APPLICATION_JSON})
    public Response uploadFile(
        @FormDataParam("file") InputStream is,
        @FormDataParam("file") FormDataContentDisposition detail) {

        String name = detail.getFileName();

        // do upload stuff
        String output = ....

        return Response.status(200).entity(output).build();
    }

}

我为FormDataParams输入了“ compile’c​​om.sun.jersey.contribs:jersey-
multipart:1.17.1’”。

编辑 :我能够使它在泽西岛工作,但只能以这种更原始的方式进行:

 @POST
 @Path("upload")
 @Consumes(MediaType.MULTIPART_FORM_DATA)     
 @Produces(MediaType.TEXT_PLAIN)

 public Response uploadFile(final MimeMultipart file) {
   if (file == null) {
     return Response.status(Response.Status.BAD_REQUEST).entity("Must supply a valid file").build();

   try {
     for (int i = 0; i < file.getCount(); i++) {
       // ... do something with file.getBodyPart(i));
     }
     return Response.ok("done").build();
   } catch (final Exception e) {
     return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(e).build();
   }
 }

这可能是一个足够的解决方法,但仍想深入了解问题。


问题答案:

我有同样的问题。

这是一个版本问题(我在jersey.multipart中为1.8,在其余的球衣中为1.17.1)。将它们全部设置为1.17.1 workrd。



 类似资料:
  • 问题内容: 我正在将JAX-RS的jersey实现用于Web服务。我对这个JAX-RS非常陌生。 我试图在服务中添加一个方法,该方法接受Employee对象并根据Employee对象的值返回雇员ID(为此有数据库命中)。 遵循Restful原则,我将方法设置为@GET并提供了url路径,如下所示: 出于测试目的,我编写了此客户端: } 运行它时,出现错误: 编辑: 模型: 请让我知道问题出在哪里,

  • 问题内容: 我正在将JAX-RS的jersey实现用于Web服务。我对这个JAX-RS非常陌生。 我试图在服务中添加一个方法,该方法接受Employee对象并根据Employee对象的值返回雇员ID(为此有数据库命中)。 遵循Restful原则,我将该方法设置为@GET并提供了url路径,如下所示: 出于测试目的,我编写了此客户端: 运行它时,出现错误: Method, public javax.

  • 我试图使用位于src/test/resources下的文件进行单元测试,但当我试图读取它时,我不能总是获得空指针。 我使用Spring Boot 2.0.2,JDK 10和Gradle。 我尝试了谷歌搜索问题时发现的许多代码变体,但没有成功。 我的身材。gradle看起来像这样: 我的测试是这些测试的一些变体(我尝试过的任何测试都没有成功): 测试课程如下: src\test\java\com\m

  • 使用Spring护套。我正在尝试使用Apache POI库解析项目中本地存储的excel文件。我的目录结构如下: > src > 主要 > java语言 com.app 控制器 模型 存储 库 资源 静态 测试.xlsx 我已经尝试了以上两种访问文件的方法,并且尝试了许多不同的文件路径,但是都没有效果。我没有得到构建错误或运行时错误,只是没有找到文件,当我试图调用该方法时,我在那一行得到一个Nul

  • 我使用这个网络服务上传一个文件使用泽西 //省省吧 //将上传的文件保存到新位置 当我执行我的代码我得到一个405错误!对这个问题有什么建议吗?

  • 本文向大家介绍Android使用xml文件资源定义菜单实现方法示例,包括了Android使用xml文件资源定义菜单实现方法示例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android使用xml文件资源定义菜单实现方法。分享给大家供大家参考,具体如下: 使用 XML 文件定义菜单 Android 提供了创建菜单的方式,一种是在 Java 代码中创建,一种是使用XML 文件定义。上面的实