2013-11-24 45 views
0

我想爲我的基於澤西島的休息服務器實現文件上傳功能。JAX-RS澤西島錯誤java.lang.NoSuchMethodError

當我把我的pom.xml(使用maven)到:

<dependency> 
     <groupId>org.glassfish.jersey.media</groupId> 
     <artifactId>jersey-media-multipart</artifactId> 
     <version>2.4.1</version> 
    </dependency> 

    <dependency> 
     <groupId>org.glassfish.jersey.containers</groupId> 
     <artifactId>jersey-container-jdk-http</artifactId> 
     <version>2.0</version> 
    </dependency> 

我得到以下錯誤:

JAX-RS Jersey Error java.lang.NoSuchMethodError: org.glassfish.jersey.internal.util.ReflectionHelper.getContextClassLoaderPA()Ljava/security/PrivilegedAction; 

沒有 「新澤西媒體多」 -dependency其餘服務器正在工作,但我不能使用文件上傳功能。

下面的源代碼中的重要組成部分:

ResourceConfig resourceConfig = new ResourceConfig(RestWebServer.class); 
//resourceConfig.register(MultiPartFeature.class); 
URI endPoint = new URI(pathServer); 

server = JdkHttpServerFactory.createHttpServer(endPoint, resourceConfig); 

RestWebserver.java:

@Path("/fileupload") 
@POST 
@Consumes(MediaType.MULTIPART_FORM_DATA) 
public Response uploadFile( 
     @FormParam("file") InputStream uploadedInputStream, 
     @FormParam("file") FormDataContentDisposition fileDetail) 
{ 
    String uploadedFileLocation = "c://" + fileDetail.getFileName(); 

    // save it 
    saveToFile(uploadedInputStream, uploadedFileLocation); 

    String output = "File uploaded via Jersey based RESTFul Webservice to: " + uploadedFileLocation; 

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

回答

1

不是澤西用戶,所以我只是猜測,但你可能有一個罐子不匹配。

嘗試用這種替代你的第二個條目:

<dependency> 
    <groupId>org.glassfish.jersey.containers</groupId> 
    <artifactId>jersey-container-jdk-http</artifactId> 
    <version>2.4.1</version> 
</dependency> 
+0

然後我得到了「JdkHttpServerFactory無法解析」爲「server = JdkHttpServerFactory.createHttpServer(endPoint,resourceConfig);」 – hehe

+0

對其他東西進行了編輯嘗試 - 只是升級版本。 – Vidya

+0

其部分工作,uploadFile方法拋出以下錯誤: 警告:找不到注入源的類型爲public javax.ws.rs.core.Response的參數me.whisper.server.RestWebServer.uploadFile(java.io.InputStream ,org.glassfish.jersey.media.multipart.FormDataContentDisposition)位於索引0處。 org.glassfish.jersey.server.model.ModelValidationException:應用程序資源模型的驗證在應用程序初始化期間失敗。 [[致命]沒有找到注入源的參數類型爲public javax.ws.rs.core.Response .... – hehe

0

立足我的猜測在chapter 8,你註冊了客戶機/服務器的代碼?

+0

ResourceConfig resourceConfig = new ResourceConfig(RestWebServer.class); \t \t \t resourceConfig.packages(「org.glassfish.jersey.examples.multipart」); resourceConfig.register(MultiPartFeature.class); URI endPoint = new URI(pathServer); 不工作... – hehe

+0

你是否在使用Netbeans及其模板? – sataniccrow

+0

沒有使用Eclipse的Im ... – hehe