JAX-RS Jersey错误java.lang.NoSuchMethodError

时间:2013-11-24 17:39:57

标签: rest file-upload jersey jax-rs

我想为基于运动衫的休息服务器实现文件上传功能。

当我将我的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;

没有“jersey-media-multipart” - 依赖关系,其余服务器正在运行,但我无法使用文件上传功能。

遵循源代码的重要部分:

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();
}

2 个答案:

答案 0 :(得分:1)

不是泽西用户所以我只是猜测,但你可能有一个罐子不匹配。

尝试用这个替换你的第二个条目:

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

答案 1 :(得分:0)

根据我对chapter 8的猜测,您是否注册了客户端/服务器代码?