简体   繁体   中英

Intellij can't find java.net.http when compiling with Java 11

I'm trying to get one of my projects ready for Java 11 but for some reason Intellij can't find java.net.http . It isn't underlining it as not found in module-info.java like it would if I typed it wrong but when I try build the project I get the error below. I've tried reinstalling Intellij 2018.2.3 and uninstalling all other versions of Java. Any advice on how to get this working would be appreciated.

Error:

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

module-info.java:

module crawler {
    requires java.net.http;
}

Request.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);
    }
}

Structure:

crawler
    src
        Request
            Request.java
        module-info.java

In the case that the above proposed resolution (by @Will) does not solve your issue as was the case with me (ie setting the project language level ), check to to see what the bytecode target version of your java compiler has been set to, in your project preferences: 在 IntelliJ 中为 Java 设置项目首选项字节码版本

I had the same problem with the package jdk.jfr. This is how I fixed it. It should work for you too.

In order to make it work I had to make 2 changes:

First I had to set the language level to 11; see in the picture below.

在此处输入图片说明

Then I had to adjust the Java Compiler. The Target bytecode version is 11 and I set the project bytecode version Same as language level . Then you don't have to change all of them constantly. Please see picture below.

在此处输入图片说明

I had the wrong project language level set. To use java.net.http you need it to be at least 11. To change the project language level see: https://www.jetbrains.com/help/idea/project-page.html

Hopefully this helps someone else out.

For those who are having this problem in 2022, even if the solutions mentioned here did not help, I was able to figure out what the problem was and how to fix this.

First of all I wanted to make sure that the problem is not from my Maven config, so I ran the following in my terminal :

mvn package

followed by:

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

and it was build without any errors whatsoever. So it means something is up with IntelliJ.

I am using Java 17 and building with Maven using IntelliJ. IntelliJ uses its own internal command to build the project. To override this behaviour, you must go to Preferences - Build, Execution & Deployment - Build Tools - Maven - Runner and select the option Delegate IDE build/run actions to maven which will essentially run directly from the Maven config file using the mvn tool installed in the system, instead of using the IDE command.

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

Set the compiler for IntelliJ as Java 11 IntelliJ Idea-> Preferences-> Build, Execution, Deployment -> Java Compiler Select java 11 from the drop down

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM