我在从HttpRequest JavaDoc编译简单的阻塞GET示例时遇到问题:
package org.example;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import static java.net.http.HttpRequest.noBody;
import static java.net.http.HttpResponse.asString;
public class Http2 {
public static void main(String[] args) throws URISyntaxException, IOException, InterruptedException {
HttpResponse response = HttpRequest
.create(new URI("http://www.infoq.com"))
.body(noBody())
.GET().response();
int responseCode = response.statusCode();
String responseBody = response.body(asString());
System.out.println(responseBody);
}
}
Run Code Online (Sandbox Code Playgroud)
package java.net.http does not exist使用JDK 9进行编译时遇到错误:
{ jdk9 } » /cygdrive/c/Program\ Files/Java/jdk-9/bin/javac -d out/production -modulesourcepath org.example.module1/src/ -m org.example.module1
org.example.module1\src\org.example.module1\org\example\Http2.java:6: error: package java.net.http does not exist
import java.net.http.HttpRequest;
^
org.example.module1\src\org.example.module1\org\example\Http2.java:7: error: package java.net.http does not exist
import java.net.http.HttpResponse;
^
org.example.module1\src\org.example.module1\org\example\Http2.java:9: error: package java.net.http does not exist
import static java.net.http.HttpRequest.noBody;
^
org.example.module1\src\org.example.module1\org\example\Http2.java:9: error: static import only from classes and interfaces
import static java.net.http.HttpRequest.noBody;
^
org.example.module1\src\org.example.module1\org\example\Http2.java:10: error: package java.net.http does not exist
import static java.net.http.HttpResponse.asString;
^
org.example.module1\src\org.example.module1\org\example\Http2.java:10: error: static import only from classes and interfaces
import static java.net.http.HttpResponse.asString;
^
org.example.module1\src\org.example.module1\org\example\Http2.java:14: error: cannot find symbol
HttpResponse response = HttpRequest
^
symbol: class HttpResponse
location: class Http2
org.example.module1\src\org.example.module1\org\example\Http2.java:14: error: cannot find symbol
HttpResponse response = HttpRequest
^
symbol: variable HttpRequest
location: class Http2
org.example.module1\src\org.example.module1\org\example\Http2.java:16: error: cannot find symbol
.body(noBody())
^
symbol: method noBody()
location: class Http2
org.example.module1\src\org.example.module1\org\example\Http2.java:19: error: cannot find symbol
String responseBody = response.body(asString());
^
symbol: method asString()
location: class Http2
10 errors
使用命令行和IntelliJ发生相同的错误.
这不是我的模块的问题,因为没有java.net.http的类编译并运行没有任何问题.
知道发生了什么事吗?
在您的模块定义中(根据您的包名称)src/org/example/module-info.java,您需要将依赖项添加到java.net.http包中,该包包含在java.httpclient模块中:
module org.example {
requires java.httpclient;
}
Run Code Online (Sandbox Code Playgroud)
您可以在模块摘要中找到JDK模块列表.
同时,自从构建了jdk9的149个类
HttpClientHttpRequestHttpResponseWebSocket已被转移到包裹jdk.incubator.http.它们是拼图模块的一部分jdk.incubator.httpclient.有关详细信息,请参阅票据JDK-8170648.
所以你必须改变你的导入jdk.incubator.http.*.此外,您必须jdk.incubator.httpclient在您的模块中包含该模块module-info.java.编译和运行代码时,请将参数添加 --add-modules=jdk.incubator.httpclient到java和javac可执行文件的调用中.
所有与http客户端相关的类都已从jdk9中删除.它们作为孵化器功能包含在内,不再是API的一部分.希望新客户将成为jdk10的一部分.
| 归档时间: |
|
| 查看次数: |
7210 次 |
| 最近记录: |