使用 Java 11 编译时,Intellij 找不到 java.net.http
Intellij can't find java.net.http when compiling with Java 11
我正在尝试让我的项目之一为 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
模块-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);
}
}
结构:
crawler
src
Request
Request.java
module-info.java
我设置了错误的项目语言级别。使用 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
希望这对其他人有所帮助。
如果上述建议的解决方案(由@Will)无法像我一样解决您的问题(即设置项目语言级别),请检查在您的项目首选项中查看您的 java 编译器的 字节码目标版本 设置的内容:
我对包 jdk.jfr 也有同样的问题。
这就是我修复它的方式。它应该也适合你。
为了使其正常工作,我必须进行 2 处更改:
首先我必须将语言级别设置为11;见下图。
然后我不得不调整 Java 编译器。 Target字节码版本为11,我设置项目字节码版本与语言级别相同。这样您就不必不断更改所有这些。请看下图。
对于那些在 2022 年遇到这个问题的人,即使这里提到的解决方案没有帮助,我也能够弄清楚问题是什么以及如何解决这个问题。
首先我想确保问题不是出自我的 Maven 配置,所以我 运行 在我的 终端 中输入以下内容:
mvn package
其次是:
java -cp target/covid-cases-cli-1.0-SNAPSHOT.jar org.matrixeternal.covidcasescli.App
它的构建没有任何错误。所以这意味着 IntelliJ 出了问题。
我正在使用 Java 17 并使用 IntelliJ 使用 Maven 进行构建。 IntelliJ 使用自己的内部命令来构建项目。要覆盖此行为,您必须转到 Preferences - Build, Execution & Deployment - Build Tools - Maven - Runner
和 select 选项 Delegate IDE build/run actions to maven
,这实际上将 运行 直接使用系统中安装的 mvn 工具从 Maven 配置文件中获取,而不是使用 IDE 命令。
将 IntelliJ 的编译器设置为 Java 11
IntelliJ Idea-> 首选项-> 构建、执行、部署-> Java 编译器
Select java 下拉列表中的 11
我正在尝试让我的项目之一为 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
模块-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);
}
}
结构:
crawler
src
Request
Request.java
module-info.java
我设置了错误的项目语言级别。使用 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
希望这对其他人有所帮助。
如果上述建议的解决方案(由@Will)无法像我一样解决您的问题(即设置项目语言级别),请检查在您的项目首选项中查看您的 java 编译器的 字节码目标版本 设置的内容:
我对包 jdk.jfr 也有同样的问题。 这就是我修复它的方式。它应该也适合你。
为了使其正常工作,我必须进行 2 处更改:
首先我必须将语言级别设置为11;见下图。
然后我不得不调整 Java 编译器。 Target字节码版本为11,我设置项目字节码版本与语言级别相同。这样您就不必不断更改所有这些。请看下图。
对于那些在 2022 年遇到这个问题的人,即使这里提到的解决方案没有帮助,我也能够弄清楚问题是什么以及如何解决这个问题。
首先我想确保问题不是出自我的 Maven 配置,所以我 运行 在我的 终端 中输入以下内容:
mvn package
其次是:
java -cp target/covid-cases-cli-1.0-SNAPSHOT.jar org.matrixeternal.covidcasescli.App
它的构建没有任何错误。所以这意味着 IntelliJ 出了问题。
我正在使用 Java 17 并使用 IntelliJ 使用 Maven 进行构建。 IntelliJ 使用自己的内部命令来构建项目。要覆盖此行为,您必须转到 Preferences - Build, Execution & Deployment - Build Tools - Maven - Runner
和 select 选项 Delegate IDE build/run actions to maven
,这实际上将 运行 直接使用系统中安装的 mvn 工具从 Maven 配置文件中获取,而不是使用 IDE 命令。
将 IntelliJ 的编译器设置为 Java 11 IntelliJ Idea-> 首选项-> 构建、执行、部署-> Java 编译器 Select java 下拉列表中的 11