2014-04-21 1 views
1

미안이 주요 방법에서 그리 즐 HTTP 서버를 만들려고 내가이 IllegalArgumentException가 무엇입니까 만들 때 : 나는 MultiPartConfigProvider과의 새로운 인스턴스를 모두 수동으로 등록하는 것을 시도했다널 MultiPartConfig GrizzlyHttpServer

java.lang.IllegalArgumentException: The MultiPartConfig instance we expected is not present. Have you registered the MultiPartConfigProvider class? 

을 클래스 자체 (주석 행 참조). 나는 무엇을 놓칠 수 있 었는가? 이 스택 트레이스입니다

public class ResourceServer 
{ 

public static final String HOST = "localhost"; 
public static final int PORT = 8080; 
public static final String ROOT = "dummy"; 

public static final URI BASE_URI = ResourceUriBuilder.getBaseURI(HOST, PORT, ROOT); 
private static final String BASE_PACKAGE_NAME = "com.mycompany.myapp.resource"; 

public static HttpServer startServer() 
{ 
    final ResourceConfig rc = new ResourceConfig().packages(true, BASE_PACKAGE_NAME); 

//  rc.register(new MultiPartConfig()); 
// 
//  MultiPartConfigProvider provider = new MultiPartConfigProvider(); 
//  rc.register(provider); 

//  rc.register(MultiPartConfig.class); 


    return GrizzlyHttpServerFactory.createHttpServer(BASE_URI,rc); 
} 

public static void main(String[] args) throws IOException 
{ 
    final HttpServer server = startServer(); 
    // ... 
} 
} 

:

코드입니다

java.lang.IllegalArgumentException: The MultiPartConfig instance we expected is not present. 
Have you registered the MultiPartConfigProvider class? 
at com.sun.jersey.multipart.impl.MultiPartReaderClientSide.<init>(MultiPartReaderClientSide.java:102) 
com.mycompany.myapp.resource.server.ResourceServer.startServer(ResourceServer.java:37) 
at com.mycompany.myapp.resource.server.ResourceServer.main(ResourceServer.java:47) 

그리고 이것들은 POM 파일의 관련 종속 있습니다

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.glassfish.jersey</groupId> 
      <artifactId>jersey-bom</artifactId> 
      <version>${jersey.version}</version> 
      <type>pom</type> 
      <scope>import</scope> 
     </dependency> 
    </dependencies> 
</dependencyManagement> 

<dependencies> 
    <dependency> 
     <groupId>com.google.guava</groupId> 
     <artifactId>guava</artifactId> 
     <version>16.0.1</version> 
    </dependency> 
    <dependency> 
     <groupId>org.apache.httpcomponents</groupId> 
     <artifactId>httpclient</artifactId> 
     <version>4.2.6</version> 
    </dependency> 
    <dependency> 
     <groupId>org.glassfish.jersey.containers</groupId> 
     <artifactId>jersey-container-grizzly2-http</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>org.glassfish.jersey.media</groupId> 
     <artifactId>jersey-media-moxy</artifactId> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.jersey.contribs</groupId> 
     <artifactId>jersey-multipart</artifactId> 
     <version>1.8</version> 
    </dependency> 
    <dependency> 
     <groupId>com.google.gwt</groupId> 
     <artifactId>gwt-servlet</artifactId> 
     <version>2.5.0</version> 
     <scope>runtime</scope> 
    </dependency> 
    <dependency> 
     <groupId>com.google.gwt</groupId> 
     <artifactId>gwt-user</artifactId> 
     <version>2.5.0</version> 
     <scope>provided</scope> 
    </dependency> 
    <dependency> 
     <groupId>commons-beanutils</groupId> 
     <artifactId>commons-beanutils</artifactId> 
     <version>1.9.1</version> 
    </dependency> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.9</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>javax.mail</groupId> 
     <artifactId>mail</artifactId> 
     <version>1.4.5</version> 
    </dependency> 

</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.5.1</version> 
      <inherited>true</inherited> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 

<properties> 
    <jersey.version>2.7</jersey.version> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
</properties> 

편집 : 이것은 파일 리소스 파일 업로드를 위해 MultiPart 지원을 사용하려고합니다. 이 자료는 오류의 원인이되는 :

@Path("/file") 
public class FileResource 
{ 
    @POST 
    @Path("/upload") 
    @Consumes(MediaType.MULTIPART_FORM_DATA) 
    public Response uploadFile(
      @FormDataParam("file") InputStream uploadedInputStream, 
      @FormDataParam("file") FormDataContentDisposition fileDetail) { 
    // Empty method here 
} 

답변

0

가 나는 문제를 자신을 해결하기 위해 관리 : 나는이 FileResource에 대한 주석 제거 :

@FormDataParam("file") InputStream uploadedInputStream, 
@FormDataParam("file") FormDataContentDisposition fileDetail) 

그리고 pom.xml 파일에서이 라이브러리 :

<dependency> 
    <groupId>com.sun.jersey.contribs</groupId> 
    <artifactId>jersey-multipart</artifactId> 
    <version>1.8</version> 
</dependency> 

그리고 문제는 그냥 사라집니다 ... 파일을 아무 문제없이 업로드 할 수 있습니다. 바보 같은 문제가있는 사람에게 도움이되기를 바랍니다. 누구든지이 실패의 원인을 알게되면 알려주십시오.