无法在IntelliJ中使用jdk 11进行编译,找不到符号

时间:2018-09-26 05:42:22

标签: java intellij-idea java-11

我设置了JDK 11,直到我使用String的Java 11 isBlank()的新方法时,它才会编译,编译时会出现此错误,我尝试清理JDK安装,从IntelliJ清理缓存,但没有任何帮助。错误是:

enter image description here

5 个答案:

答案 0 :(得分:7)

您应该检查以下内容:

  1. 您已将JDK11定义为以下SDK之一: enter image description here
  2. 您的项目的默认SDK是JDK11,而您的项目的默认语言级别是11: enter image description here
  3. 您的模块语言级别也是11。enter image description here

如果您使用Maven,请检查pom.xml中编译器插件的“源”和“目标”属性是否为11。模块语言级别配置是从pom.xml配置中导入的,例如情况

     <properties>
         <maven.compiler.source>11</maven.compiler.source>
         <maven.compiler.target>11</maven.compiler.target>
     </properties>

     <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.8.0</version>
        <configuration>
            <source>11</source>
            <target>11</target>
        </configuration>
     </plugin>

如果您的pom.xml的源或目标级别错误,则可能需要右键单击| Maven |更改该pom.xml后重新导入。如果使用Gradle,则应检查是否具有类似的配置。

  1. 您的模块SDK是Project JDK11或仅仅是JDK11 enter image description here enter image description here

在IntelliJ IDEA 2018.2.4中使用Maven 3.5.4进行了测试

答案 1 :(得分:5)

尝试将编译器目标字节码版本设置为11。

为此,请转到Settings-Build Execution Deployment-Compiler-Java compiler,然后将模块的目标字节码版本设置为11。

答案 2 :(得分:4)

您可以使用JDK 11进行编译,但是如果针对较旧版本的Java进行编译,它将找不到该方法。

转到File > Project Structure -> Project并检查项目语言级别,如下图的箭头所示:

不适用于项目语言级别10: Wrong project language level

在项目语言级别11下可以正常工作: Working project language level

请注意,我具有以下Java编译器设置(使用IntelliJ 2018.3的新项目的默认设置): 项目字节码版本与语言级别相同! Java compiler settings

答案 3 :(得分:1)

我有类似的问题。对于Java 11功能,没有找到符号。尽管一切都已经设置为11。

解决方案是,在我的Idea设置中,Gradle JVM设置为JDK8。(因为我后来添加了JDK 11)

在我的build.gradle中未设置的sourceCompatibiltytargetCompatibility中,gradle守护程序(从Idea开始)正在运行并使用JDK 8进行编译。这些属性动态设置为8(或1.8)。

我的解决方案是告诉我将Gradle的JVM设置为11的想法:

enter image description here

答案 4 :(得分:0)

就我而言,它在Project语言级别甚至没有显示11。所以我必须选择X,如下面的屏幕截图

enter image description here