12

我正在尝试让我的一个项目为 Java 11 做好准备,但由于某种原因 Intellij 找不到java.net.http. module-info.java如果我输入错误,它不会像没有找到它那样强调它,但是当我尝试构建项目时,我得到下面的错误。我尝试重新安装 Intellij 2018.2.3 并卸载所有其他版本的 Java。任何有关如何使这项工作的建议将不胜感激。

错误:

Information:java: Errors occurred while compiling module 'crawler'
Information:javac 11 was used to compile java sources
Information:15/09/2018 11:16 - Compilation completed with 1 error and 0 warnings in 636 ms
C:\Users\Will\IdeaProjects\crawler\src\module-info.java
Error:(2, 22) java: module not found: java.net.http

模块信息.java:

module crawler {
    requires java.net.http;
}

请求.java:

package Request;

import java.io.IOException;
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

public class Request {
    public static void main(String[] args) throws IOException, InterruptedException {
        System.out.println("starting download");
        String body = HttpClient.newBuilder().build().send(HttpRequest.newBuilder().uri(URI.create("https://example.com")).build(), HttpResponse.BodyHandlers.ofString()).body();
        System.out.println("finished download:" + body);
    }
}

结构:

crawler
    src
        Request
            Request.java
        module-info.java
4

4 回答 4

31

如果上述建议的解决方案(由@Will 提出)不能像我一样解决您的问题(即设置项目语言级别),请检查以查看您的 java 编译器的字节码目标版本已设置为,在您的项目首选项中: 在 IntelliJ 中为 java 设置项目首选项字节码版本

于 2019-08-19T10:03:04.750 回答
15

我对 jdk.jfr 包也有同样的问题。这就是我修复它的方法。它也应该对你有用。

为了使其工作,我必须进行 2 处更改:

首先,我必须将语言级别设置为 11;见下图。

在此处输入图像描述

然后我不得不调整 Java 编译器。目标字节码版本为 11,我将项目字节码版本设置为与语言级别相同。然后,您不必不断地更改所有这些。请看下图。

在此处输入图像描述

于 2020-05-27T08:34:18.457 回答
14

我设置了错误的项目语言级别。要使用java.net.http它,您至少需要 11。要更改项目语言级别,请参阅:https ://www.jetbrains.com/help/idea/project-page.html

希望这可以帮助其他人。

于 2018-09-15T06:01:51.903 回答
0

对于那些在 2022 年遇到这个问题的人,即使这里提到的解决方案没有帮助,我也能够弄清楚问题是什么以及如何解决这个问题。

首先,我想确保问题不是来自我的 Maven 配置,所以我在终端中运行了以下命令:

mvn package

其次是:

java -cp target/covid-cases-cli-1.0-SNAPSHOT.jar org.matrixeternal.covidcasescli.App

它的构建没有任何错误。所以这意味着 IntelliJ 出了点问题。

我正在使用 Java 17 并使用 IntelliJ 与 Maven 一起构建。IntelliJ 使用自己的内部命令来构建项目。要覆盖此行为,您必须使用安装在系统中的 mvn 工具转到Preferences - Build, Execution & Deployment - Build Tools - Maven - Runner并选择Delegate IDE build/run actions to maven本质上将直接从 Maven 配置文件运行的选项,而不是使用 IDE 命令。

将 IDE 构建/运行操作委托给 maven 选项

于 2022-02-19T23:55:11.853 回答