无法配置 IntelliJ 以使用 Java 11
Unable to configure IntelliJ to use Java 11
虽然 IntelliJ IDE 没有给我任何警告,但是这种两行的方法会导致编译错误 Error:(12, 37) java: incompatible types: byte[] cannot be converted to int
:
import java.math.BigInteger;
public class Test {
public static void main(String[] args){
String foo = "123";
new BigInteger(foo.getBytes(), 1, 1);
}
}
在 JDK 11 中有一个具有此签名的有效构造函数 public BigInteger(byte[] val, int off, int len)
(java.math.BigInteger 的第 306 行)但在 JDK 8 中没有。我能够编译它直接用 javac
for JDK 11 但它失败了 JDK 8 正如预期的那样。我已将 IntelliJ 配置为使用 JDK 11,但我不知道为什么它使用旧版本...System.out.println(System.getProperty("java.version"))
打印 11.0.1
。好像是用 JDK 8 编译,运行 用 JDK 11 编译。
我已经检查我在以下位置选择了 JDK 11:
- Run/Debug 配置 > JRE
- 项目结构 > 项目 > 项目 SDK
- 项目结构 > 项目 > 项目语言级别
- 项目结构 > 模块 > 语言级别
我正在使用 IntelliJ IDEA 2018.2.6 (Community Edition)
。重启 IntelliJ 后问题依旧。
编辑:
项目使用maven
类似问题的因素可能很少,主要是使用了其他工具(例如maven或gradle)造成的。
仅使用 IDE 编译和 运行 代码应该没有问题(因为使用的 Java 版本已完全配置)。
可以将构建工具(maven,gradle)设置为使用 Java 的不同版本,然后使用 IDE 中配置的版本。
要在终端中查看这些工具 运行 使用的版本:
gradle -version
mvn -version
输出应包含使用这些工具配置的 Java 版本。
他们的 Java 版本主要使用 JAVA_HOME
环境变量,它指向 JRE/JDK 位置。
如果构建工具使用不同的 Java 版本来编译源代码,那么启动应用程序的版本可能会导致此类错误和异常。
这些问题与 Java8 和更新版本之间标准 API 的变化有关。
将 JAVA_HOME
变量的值更改为指向 Java11 文件夹应该可以完成工作,但是如果仍然需要旧版本,例如在使用 Maven 时,可以使用插件:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.11</source>
<target>1.11</target>
</configuration>
</plugin>
虽然 IntelliJ IDE 没有给我任何警告,但是这种两行的方法会导致编译错误 Error:(12, 37) java: incompatible types: byte[] cannot be converted to int
:
import java.math.BigInteger;
public class Test {
public static void main(String[] args){
String foo = "123";
new BigInteger(foo.getBytes(), 1, 1);
}
}
在 JDK 11 中有一个具有此签名的有效构造函数 public BigInteger(byte[] val, int off, int len)
(java.math.BigInteger 的第 306 行)但在 JDK 8 中没有。我能够编译它直接用 javac
for JDK 11 但它失败了 JDK 8 正如预期的那样。我已将 IntelliJ 配置为使用 JDK 11,但我不知道为什么它使用旧版本...System.out.println(System.getProperty("java.version"))
打印 11.0.1
。好像是用 JDK 8 编译,运行 用 JDK 11 编译。
我已经检查我在以下位置选择了 JDK 11:
- Run/Debug 配置 > JRE
- 项目结构 > 项目 > 项目 SDK
- 项目结构 > 项目 > 项目语言级别
- 项目结构 > 模块 > 语言级别
我正在使用 IntelliJ IDEA 2018.2.6 (Community Edition)
。重启 IntelliJ 后问题依旧。
编辑:
项目使用maven
类似问题的因素可能很少,主要是使用了其他工具(例如maven或gradle)造成的。
仅使用 IDE 编译和 运行 代码应该没有问题(因为使用的 Java 版本已完全配置)。
可以将构建工具(maven,gradle)设置为使用 Java 的不同版本,然后使用 IDE 中配置的版本。
要在终端中查看这些工具 运行 使用的版本:
gradle -version
mvn -version
输出应包含使用这些工具配置的 Java 版本。
他们的 Java 版本主要使用 JAVA_HOME
环境变量,它指向 JRE/JDK 位置。
如果构建工具使用不同的 Java 版本来编译源代码,那么启动应用程序的版本可能会导致此类错误和异常。
这些问题与 Java8 和更新版本之间标准 API 的变化有关。
将 JAVA_HOME
变量的值更改为指向 Java11 文件夹应该可以完成工作,但是如果仍然需要旧版本,例如在使用 Maven 时,可以使用插件:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.11</source>
<target>1.11</target>
</configuration>
</plugin>