Java 9导入了一个新的HTTP/2客户端API,该API似乎很好用,但有什么方法可以在Java 8中使用它?如何在Java8项目中使用Http客户端API(自Java 9开始)
OR
有任何shim
/polyfill
(从JavaScript)可使其可在Java中8?
Java 9导入了一个新的HTTP/2客户端API,该API似乎很好用,但有什么方法可以在Java 8中使用它?如何在Java8项目中使用Http客户端API(自Java 9开始)
OR
有任何shim
/polyfill
(从JavaScript)可使其可在Java中8?
有什么办法可以在java 8中使用它吗?
没有,因为jdk.incubator.http
模块已经从Java 9添加。
因此,编译器在使用Java8时无法使用--release 8
选项进行编译。你最终会得到错误为:
$ javac --release 8 .../src/com/HttpGet.java $ .../src/com/HttpGet.java:3: error: package jdk.incubator.http does not exist import jdk.incubator.http.HttpClient; ^
用最少的代码来重现此为: -
import jdk.incubator.http.HttpClient;
public class HttpGet {
public static void main(String[] args) {
HttpClient httpClient = HttpClient.newBuilder().followRedirects(HttpClient.Redirect.ALWAYS).build();
System.out.println(httpClient.version());
}
}
此外,该文件明确读取此前期
Incubating Feature。将在未来的版本中删除。
原则上,它的来源是可用的。你可能会复制它,编译它并创建一个可用于Java 8的jar(如果代码需要Java 9,可能会进行一些更改或缺少功能),类似于ThreeTen-Backport providing java.time
for Java 6/7。
但似乎还没有一个可用(快速搜索后)。如果您决定朝这个方向前进,请务必遵守相关许可证。
我试图从jdk9复制源代码并对其进行编译,但是由于缺少一些内部API而失败。 –
它不*去除100%的时间*,它可能被简单地*完成*并且完全留在idk中;只是一个小字眼问题,我猜 – Eugene
@Eugene确实。我引用了javadoc,但它恰好与孵化器JEP背后的想法背道而驰。 – nullpointer
由于孵化功能大部分是由java源代码实现的,我试图复制并将它编译成一个jar文件,但是Java 8编译器抱怨说有一些内部API丢失了...... 缺少的API就像'System .Logger','... misc.Unsafe','AsnycResult'等。 –