【问题标题】:REST - Jetty 9 and Jersey 2.6 Multipart file uploadREST - Jetty 9 和 Jersey 2.6 分段文件上传
【发布时间】:2018-02-14 10:59:14
【问题描述】:

我正在尝试创建一个 api 来编写(上传)带有 Jetty 9.4.7Jersey 2.26 的文件。

api 结构如下:/api/write

我在App.java 中初始化服务器,它位于com.rest.app 包中。资源文件FileUploadResource.javacom.rest.res包中。

这是App.java 类:

public class App {
  public static void main(String[] args) {
    Server server = new Server(8500);

    final ResourceConfig resourceConfig = new ResourceConfig(FileUploadResource.class);
    resourceConfig.packages("com.rest.res");
    resourceConfig.register(MultiPartFeature.class);

    ServletContextHandler contextHandler = new ServletContextHandler(ServletContextHandler.NO_SESSIONS);
    contextHandler.setContextPath("/");
    server.setHandler(contextHandler);

    ServletHolder jerseyServletHolder = contextHandler.addServlet(ServletContainer.class, "/api/*");
    jerseyServletHolder.setInitOrder(0);


    try {
        server.start();
        server.join();
    } catch (Exception e) {
        e.printStackTrace();
        System.out.println("Stopping server....");
        server.destroy();
    }

}

}

这里是FileUploadResource.java

@Path("/")
public class FileUploadResource {
    @POST
    @Path("write")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    @Produces(MediaType.APPLICATION_JSON)
    public Response write(@FormDataParam("file") InputStream fileInputStream,@FormDataParam("file") FormDataContentDisposition contentDisposition) {

        // upload file
        // do something

        return response;
    }
}

当我发送任何请求时,我收到此错误:

WARNING: Attempt to release request processing resources has failed for a request.
java.lang.NoSuchMethodError: javax.servlet.http.HttpServletResponse.getStatus()I

这里是pom.xml 依赖树:

<dependencies>
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-server</artifactId>
        <version>9.4.7.v20170914</version>
    </dependency>
    <dependency>
        <groupId>org.eclipse.jetty</groupId>
        <artifactId>jetty-servlet</artifactId>
        <version>9.4.7.v20170914</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-common</artifactId>
        <version>2.26</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.inject</groupId>
        <artifactId>jersey-hk2</artifactId>
        <version>2.26</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.core</groupId>
        <artifactId>jersey-server</artifactId>
        <version>2.26</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.containers</groupId>
        <artifactId>jersey-container-servlet-core</artifactId>
        <version>2.26</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-moxy</artifactId>
        <version>2.26</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-multipart</artifactId>
        <version>2.26</version>
    </dependency>
</dependencies>

我做错了什么?

谢谢。

【问题讨论】:

    标签: java jersey jetty


    【解决方案1】:

    尝试将其添加到您的 pom 中:

    javax.servlet-api-3.1.0.jar
    javax.servlet.jar
    javax.ws.rs-api-2.0.1.jar
    

    【讨论】:

      猜你喜欢
      • 2017-01-29
      • 1970-01-01
      • 1970-01-01
      • 2017-11-23
      • 1970-01-01
      • 2018-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多