Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;“包java.net.http不存在”;JDK9上的错误_Java_Java 9 - Fatal编程技术网

&引用;“包java.net.http不存在”;JDK9上的错误

&引用;“包java.net.http不存在”;JDK9上的错误,java,java-9,Java,Java 9,从HttpRequest JavaDoc编译简单的blocking 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 JavaDoc编译简单的blocking 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);
    }
}
使用JDK 9编译时,我发现
包java.net.http不存在
错误:

{ 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 {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:错误:包java.net.http不存在 导入java.net.http.HttpRequest; ^ org.example.module1\src\org.example.module1\org\example\Http2.java:7:错误:包java.net.http不存在 导入java.net.http.HttpResponse; ^ org.example.module1\src\org.example.module1\org\example\Http2.java:9:错误:包java.net.http不存在 导入静态java.net.http.HttpRequest.noBody; ^ org.example.module1\src\org.example.module1\org\example\Http2.java:9:错误:仅从类和接口静态导入 导入静态java.net.http.HttpRequest.noBody; ^ org.example.module1\src\org.example.module1\org\example\Http2.java:10:错误:包java.net.http不存在 导入静态java.net.http.HttpResponse.asString; ^ org.example.module1\src\org.example.module1\org\example\Http2.java:10:错误:仅从类和接口静态导入 导入静态java.net.http.HttpResponse.asString; ^ org.example.module1\src\org.example.module1\org\example\Http2.java:14:错误:找不到符号 HttpResponse响应=HttpRequest ^ 符号:类HttpResponse 地点:Http2级 org.example.module1\src\org.example.module1\org\example\Http2.java:14:错误:找不到符号 HttpResponse响应=HttpRequest ^ 符号:变量HttpRequest 地点:Http2级 org.example.module1\src\org.example.module1\org\example\Http2.java:16:错误:找不到符号 .body(noBody()) ^ 符号:方法noBody() 地点:Http2级 org.example.module1\src\org.example.module1\org\example\Http2.java:19:错误:找不到符号 字符串responseBody=response.body(asString()); ^ 符号:方法asString() 地点:Http2级 10个错误 使用命令行和IntelliJ时也会发生相同的错误

我的模块没有问题,因为没有java.net.http的类编译和运行没有任何问题


知道发生了什么吗?

在位于
src/org/example/module info.java
的模块定义中(基于包名),您需要将依赖项添加到
java.net.http
包中,该包包含在
java.httpclient
模块中:

module org.example {
    requires java.httpclient;
}

您可以在中找到JDK模块的列表。

同时,由于jdk9构建了149个类

  • HttpClient
  • HttpRequest
  • HttpResponse
  • WebSocket
已移动到包
jdk.incubator.http
。它们是jigsaw模块的一部分
jdk.incubator.httpclient
。有关更多详细信息,请参阅票证

因此,您必须将导入更改为
jdk.incubator.http.
。此外,您必须在
module info.java
中包含模块
jdk.incubator.httpclient
。编译和运行代码时,将参数
--addmodules=jdk.incubator.httpclient
添加到java和javac可执行文件的调用中


与http客户机相关的所有类都已从jdk9中删除。它们作为孵化器特性包含,不再是API的一部分。希望新客户机将成为jdk10的一部分。

在JDK11中,包是

import java.net.http.HttpClient;

模块名是
java.net.http

这已经过时了,我刚刚在JDK10中做了一些实验,在正式发布之前现在使用JDK11有意义吗?你怎么看?不是针对prod。但是如果你正在开发一个库,那么是的,因为它是LTS版本,周期为6个月