我需要为JDK 1.6下载什么泽西版?

时间:2016-04-15 09:52:57

标签: java rest jersey

什么Jersey(有RESTful Web服务支持)版本我需要为JDK 1.6下载吗?请提供下载的URL,将会很有帮助。 我还需要文件上传支持。客户端和服务器端的jar依赖关系是什么?

用于文件上载的REST服务器代码如下所示:

@Path("/file")
public class FileService {
@POST
@Path("/upload")
@Consumes(MediaType.MULTIPART_FORM_DATA)
public void uploadFile(@FormDataParam("file") InputStream uploadedInputStream,@FormDataParam("file") FormDataContentDisposition aFileDetail) {
    OutputStream os = null;
    try {
        File fileToUpload = new File("D:/uploadedFile");
        os = new FileOutputStream(fileToUpload);
        byte[] b = new byte[2048];
        int length;
        while ((length = uploadedInputStream.read(b)) != -1) {
            os.write(b, 0, length);
        }
    } catch (IOException ex) {
        ex.printStackTrace();
    } finally {
        try {
            os.close();
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }


}
}

客户端代码如下所示:

Client client = ClientBuilder.newBuilder()
    .register(MultiPartFeature.class).build();
WebTarget webTarget = client.target(REST_SERVICE_URL);
MultiPart multiPart = new MultiPart();

FileDataBodyPart fileDataBodyPart = new FileDataBodyPart("file",
    new File("d:/classes12-1.jar"),    
MediaType.APPLICATION_OCTET_STREAM_TYPE);
multiPart.bodyPart(fileDataBodyPart);

Response response = webTarget.request(
    MediaType.MULTIPART_FORM_DATA).post(
    Entity.entity(multiPart, multiPart.getMediaType()));

2 个答案:

答案 0 :(得分:7)

你需要Jersey版本2.6。使用Java 7编译2.6之后的任何内容。您可以下载" bundle"来自Maven中心。捆绑包带有捆绑在一个罐子里的所有核心罐子

核心捆绑包没有Multipart支持。您需要添加jersey-media-multipart jar。您可以从here下载它。除了这个罐子,还需要一个罐子。如果您在链接中向下滚动,您会看到mimepull 1.9.3的链接。你也需要下载它。

如果您正在使用Maven,那么您实际上只需要这两个依赖项

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.6</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.media</groupId>
    <artifactId>jersey-media-multipart</artifactId>
    <version>2.6</version>
</dependency>

如果客户端项目是一个不同的项目,那么在客户端项目中,您应该只添加以下依赖项和上面的多部分依赖项

<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-client</artifactId>
    <version>2.6</version>
</dependency>

如果客户端项目没有使用Maven或其他依赖管理系统,那么你将很难按顺序获取所有的jar,因为没有一个jar包含所有内置的jar只为客户端。你可以只使用上面的jaxrs-ri jar,但它是一个大jar,因为它也包含所有服务器类。因此,如果你需要它来说一个Android客户端,它可能不是一个好主意使用。在这种情况下,最好只使用像Maven或Gradle这样的依赖管理器。

另见:

更新

如果它不仅仅适用于jaxrs-ri-2.6.jar jar,请尝试从上面的同一链接下载jaxrs-ri-2.6.tar.gz。解压缩并添加每个目录中的所有jar

答案 1 :(得分:4)

2.1. Java SE Compatibility

2.x分支:

在版本2.6之前,Jersey是使用Java SE 6编译的。这在Jersey 2.7中已经发生了变化。

最高版本2.25.x几乎所有Jersey组件都使用Java SE 7目标进行编译。这意味着,您至少需要Java SE 7才能编译和运行使用最新Jersey的应用程序。只有核心公共和核心客户端模块仍然使用Java SE 6运行的Java类版本进行编译。

从Jersey 2.26开始,所有模块都是使用Java SE 8构建的,并且不支持在较旧的Java SE发行版上运行它。