【问题标题】:Dropwizard Forms MULTIPART - Resource throwing errors on start upDropwizard Forms MULTIPART - 启动时资源抛出错误
【发布时间】:2015-04-23 22:00:25
【问题描述】:

我正在尝试在放置向导 0.7.1 中进行分段文件上传。根据我看到的示例,我添加了:

'io.dropwizard:dropwizard-forms:0.7.1',

到我的 gradle 文件。然后我创建以下资源:

    import com.path.to.service;
import com.sun.jersey.api.MessageException;
import com.sun.jersey.core.header.FormDataContentDisposition;
import com.sun.jersey.multipart.FormDataParam;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import java.io.*;

@Path("/api/v1/files")
@Api("/api/v1/files")
public class FileUploadResource {
    private static Logger logger = LoggerFactory.getLogger(FileUploadResource.class);
    private final MyService myService;

    public FileUploadResource(MyService myService) {
        this.myService = myService;
    }

    @POST
    @Path("/upload" )
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    public Response uploadFile(@FormDataParam("file") InputStream uploadedInputStream,
            @FormDataParam("file") FormDataContentDisposition fileDetail) throws MessageException, IOException {

        return myService.process(uploadedInputStream, fileDetail);
    }
}

我在主应用程序中将资源添加到球衣中,就像我的其他资源一样:

MyService myService = new MyService();    
environment.jersey().register(new FileUploadResource(myService));

当我从 IntelliJ 启动应用程序时,我没有任何问题...我可以整天将文件上传到它,并且零错误或问题。但是,当我构建它并从命令行启动它时,我在启动时出现运行时错误。我读过一点,我可能必须按类以不同的方式注册资源,但我不明白为什么在这种情况下它可以通过我的 IDE 工作。此外,似乎他们在 drop Wizard 0.7.x 中对“表单”模块的支持并不多。好像我缺少一些基本的东西。这是错误:

ERROR [2015-04-23 21:32:01,409] com.sun.jersey.spi.inject.Errors: The following errors and warnings have been detected with resource and/or provider classes:
  SEVERE: Missing dependency for method public int com.path.to.dropwizard.resources.FileUploadResource.uploadFile(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition) throws java.io.IOException at parameter at index 0
  SEVERE: Missing dependency for method public int com.path.to.dropwizard.resources.FileUploadResource.uploadFile(java.io.InputStream,com.sun.jersey.core.header.FormDataContentDisposition) throws java.io.IOException at parameter at index 1
Exception in thread "main" javax.servlet.ServletException: com.sun.jersey.spi.container.servlet.ServletContainer-2c74ba35@9951d4d9==com.sun.jersey.spi.container.servlet.ServletContainer,1,false
        at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:561)
        at org.eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:349)
        at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:812)
        at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:288)
        at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:732)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:118)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:100)
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:60)
        at com.codahale.metrics.jetty9.InstrumentedHandler.doStart(InstrumentedHandler.java:92)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:118)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:100)
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:60)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:118)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:100)
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:60)
        at org.eclipse.jetty.server.handler.RequestLogHandler.doStart(RequestLogHandler.java:131)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:118)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:100)
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:60)
        at org.eclipse.jetty.server.handler.StatisticsHandler.doStart(StatisticsHandler.java:233)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:118)
        at org.eclipse.jetty.server.Server.start(Server.java:342)
        at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:100)
        at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:60)
        at org.eclipse.jetty.server.Server.doStart(Server.java:290)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69)
        at io.dropwizard.cli.ServerCommand.run(ServerCommand.java:43)
        at io.dropwizard.cli.EnvironmentCommand.run(EnvironmentCommand.java:43)
        at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:76)
        at io.dropwizard.cli.Cli.run(Cli.java:70)
        at io.dropwizard.Application.run(Application.java:72)
        at com.path.to.dropwizard.application.FileRegistrationService.main(FileRegistrationService.java:50)
Caused by: com.sun.jersey.spi.inject.Errors$ErrorMessagesException
        at com.sun.jersey.spi.inject.Errors.processErrorMessages(Errors.java:170)
        at com.sun.jersey.spi.inject.Errors.postProcess(Errors.java:136)
        at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:199)
        at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:770)
        at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:765)
        at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:489)
        at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:319)
        at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605)
        at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210)
        at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:374)
        at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:557)
        at javax.servlet.GenericServlet.init(GenericServlet.java:244)
        at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:540)
        ... 36 more
WARN  [2015-04-23 21:32:01,412] /: unavailable
! com.sun.jersey.spi.inject.Errors$ErrorMessagesException: null
! at com.sun.jersey.spi.inject.Errors.processErrorMessages(Errors.java:170) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at com.sun.jersey.spi.inject.Errors.postProcess(Errors.java:136) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:199) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:770) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:765) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:489) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:319) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:374) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:557) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at javax.servlet.GenericServlet.init(GenericServlet.java:244) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:540) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.servlet.ServletHolder.initialize(ServletHolder.java:349) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:812) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:288) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:732) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:118) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:100) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:60) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at com.codahale.metrics.jetty9.InstrumentedHandler.doStart(InstrumentedHandler.java:92) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:118) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:100) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:60) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:118) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:100) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:60) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.server.handler.RequestLogHandler.doStart(RequestLogHandler.java:131) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:118) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:100) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:60) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.server.handler.StatisticsHandler.doStart(StatisticsHandler.java:233) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:118) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.server.Server.start(Server.java:342) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:100) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:60) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.server.Server.doStart(Server.java:290) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at io.dropwizard.cli.ServerCommand.run(ServerCommand.java:43) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at io.dropwizard.cli.EnvironmentCommand.run(EnvironmentCommand.java:43) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at io.dropwizard.cli.ConfiguredCommand.run(ConfiguredCommand.java:76) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at io.dropwizard.cli.Cli.run(Cli.java:70) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at io.dropwizard.Application.run(Application.java:72) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at com.path.to.dropwizard.application.FileRegistrationService.main(FileRegistrationService.java:50) [cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
WARN  [2015-04-23 21:32:01,414] org.eclipse.jetty.util.component.AbstractLifeCycle: FAILED i.d.j.MutableServletContextHandler@7d32391c{/,null,STARTING}: javax.servlet.ServletException: com.sun.jersey.spi.container.servlet.ServletContainer-2c74ba35@9951d4d9==com.sun.jersey.spi.container.servlet.ServletContainer,1,false
! com.sun.jersey.spi.inject.Errors$ErrorMessagesException: null
! at com.sun.jersey.spi.inject.Errors.processErrorMessages(Errors.java:170) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at com.sun.jersey.spi.inject.Errors.postProcess(Errors.java:136) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:199) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:770) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:765) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:489) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:319) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:605) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:210) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:374) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:557) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at javax.servlet.GenericServlet.init(GenericServlet.java:244) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:540) ~[cdi-file-registration-service-dropwizard-1.0.2-SNAPSHOT.jar:na]
! ... 36 common frames omitted
! Causing: javax.servlet.ServletException: com.sun.jersey.spi.container.servlet.ServletContainer-2c74ba35@9951d4d9==com.sun.jersey.spi.container.servlet.ServletContainer,1,false

【问题讨论】:

    标签: java intellij-idea jersey multipartform-data dropwizard


    【解决方案1】:

    原来这是 gradle 插件影子的问题,切换到不同的打包工具(使用不同的类加载器)立即解决了我的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-23
      • 2016-06-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多