当前位置: 首页 > 知识库问答 >
问题:

JDK9上的“包java.net.http不存在”错误

高慈
2023-03-14

我在编译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);
    }
}

使用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

使用命令行和Intellij也会出现相同的错误。

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

你知道怎么回事吗?

共有1个答案

符修杰
2023-03-14

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

module org.example {
    requires java.httpclient;
}

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

 类似资料:
  • 我在从HttpRequest Javadoc编译简单的阻塞GET示例时遇到问题: 使用命令行和intellij也会出现相同的错误。 对于我的模块来说,这不是问题,因为没有java.net.http的类编译和运行没有任何问题。 知道这是怎么回事吗?

  • 问题内容: 我有一个目录结构,例如在包含Java文件的根目录下。我在与上述相同的根目录中的目录结构中还有另一个Java文件。我正在从中调用方法,但收到错误消息,该程序包不存在。 我已经在我的java文件中导入了包。能给我一些建议吗? 问题答案: 这有效: com / example / model / BearExtra.java com / example / web / Bear.java 现

  • 问题内容: 当我尝试构建我的android项目时,出现此错误 错误:(8,37)错误:包android.support.design.widget不存在错误:(18,9)错误:找不到符号类TabLayout错误:(18,32)错误:找不到符号类TabLayout错误: (21,33)错误:找不到符号变量TabLayout错误:(27,56)错误:软件包TabLayout不存在错误:(48,36)错

  • 我能够在本地机器上构建java项目,它使用maven成功构建。然而,当我在Jenkins机器上构建它时,我得到了一个编译错误: 包javax.jms不存在 这是什么意思?它在哪里寻找javax。jms?在本地m2回购中,classpath? 我不得不对我的pom进行以下更改。xml使其在Linux上工作: a)明确声明maven-site-plugin版本为2.1。org.apache.maven

  • 我正在使用jid3库从mp3文件中提取信息。我已经下载了jar并将其添加到BlueJ库中。 我的导入线如下 虽然我越来越 我在谷歌上搜索了一段时间,似乎找不到问题所在,有人有什么想法吗?这与这里的库示例中使用的导入行相同 正如图书馆文件所示。 任何帮助将不胜感激,谢谢。

  • 我的主文件夹是ABC里面是2个名为class和src的文件夹,src里面是2个名为ObjtFile和testFile的文件夹,ObjtFile里面是ABC. java,而testFile里面是TestABC. java。(里面的类是一样的,但是. class代替)现在ABC包含 而TestABC。java包含 错误显示TestABC。java:2:错误:包对象文件不存在 导入对象文件。ABC;