错误:Java:无效的目标版本:11 - IntelliJ IDEA

Posted

技术标签:

【中文标题】错误:Java:无效的目标版本:11 - IntelliJ IDEA【英文标题】:Error: Java: invalid target release: 11 - IntelliJ IDEA 【发布时间】:2019-06-05 19:56:06 【问题描述】:

我正在尝试构建一个使用 java 8 构建的应用程序,现在它已升级到 java 11。我在 windows 机器中使用 an oracle article 安装了 Java 11 并使用 IntelliJ IDEA 2017 作为我的 IDE。

我更改了系统环境变量并设置了

JAVA_HOME to C:\Program Files\Java\jdk-11.0.1

并将其添加到 Path 变量中。

C:\>java -version
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode) 

当我在 IntelliJ 中构建我的应用程序时,我得到了以下结果:

Information:java: Errors occurred while compiling module 'test-domain_main'
Information: javac 1.8.0_171 was used to compile java sources
Information:1/10/2019 4:21 PM - Compilation completed with 1 error and 0 warnings in 1s 199ms
Error:java: invalid target release: 11

这是我迄今为止尝试过的:

    我将 .idea/compiler.xml 目标值从 8 更改为 11,但这并没有帮助。另外,验证了settings > Build, Execution, Deployment > Compiler > Java Compiler中的Target bytecode version,我的所有模块都设置为11。

    去了file > Project Structure > SDKs *(currently I have 1.7 and 1.7 listed)* > Add new SDK > JDK > 之后,我选择了C:\Program Files\Java\jdk-11.0.1 但它出错了“所选目录不是JDK的有效主目录”

我不确定我是否安装了错误的 JDK 11,因为在我的 C:\Program Files\Java\ 中,我看到 1.71.8 的单独 JDK 和 JRE 文件夹,但只有 11.0.1 的 JDK 文件夹

或者是我需要改变什么?

【问题讨论】:

我猜2017版本的intellij不支持jdk11(或者可能需要插件才能工作),你可以尝试更新到2018。 感谢@JornVernee 根据您的建议,我更新并解决了这个问题。 Java 11 与 IntelliJ IDEA 2018.3.3 版本配合良好。 【参考方案1】:

我遇到了与 Gryu 所说的相同的问题。 相同的 Intellij 2018 3.3

我能够通过设置(如 Grigoriy 所述)开始我的项目

File->Project Structure->Modules ->> Language level to 8 ( my maven project was set to 1.8 java)

File -> Settings -> Build, Execution, Deployment -> Compiler -> Java Compiler -> 8 also there

希望对你有用

【讨论】:

***.com/a/26009627/1357094***.com/a/26009627/1357094 更详细地描述了其他类似/可能必要的解决方案(带有屏幕截图) 正是我需要的。谢谢! 对于找不到的人。 File -> Settings我在IntelliJ IDEA -> Preferences... -> Build, Execution, Deployment -> Compiler -> Java Compiler找到它 但是为什么呢?这是 IDEA 的 bug 吗? 这必须是公认的答案。谢谢。【参考方案2】: 我今天收到了相同的信息消息和错误消息,但我有 最近更新了 Idea -> 2018.3.3,构建于 2019 年 1 月 9 日。

为了解决这个问题,我更改了 File->Project Structure->Modules ->> 语言等级至 10。

并检查文件->设置->构建,执行, 部署 -> 编译器 -> Java 编译器 ->> 项目字节码每模块字节码版本。我那里有 11 个。

现在我没有收到这些通知和错误。

对于像我这样拥有最新创意并遇到相同错误的人来说可能很有用。

【讨论】:

这对我有用,即使 IntelliJ 日期早于 Java 发布日期。文件 => 项目结构 => 项目 => 项目 SDK。在New下添加新下载的JDK并点击Apply => OK之后项目立即开始编译。 ***.com/a/26009627/1357094***.com/a/26009627/1357094 更详细地描述了其他类似/可能必要的解决方案(带有屏幕截图)【参考方案3】:

两种方法中的一种可以解决问题:

方法一(推荐)

在构建文件中指定 Java 版本。

例如,对于 Gradle,转到 build.gradle 文件并指定源和目标兼容性,如 docs 中所述,然后单击 Gradle 工具窗口中的刷新按钮。

例如,将源和目标的兼容性设置为 Java 版本 17:

java 
    sourceCompatibility = JavaVersion.VERSION_17
    targetCompatibility = JavaVersion.VERSION_17

方法二

如果通过构建系统(Maven、Gradle 等)构建项目有效但 IntelliJ 显示 Invalid target release 错误,则执行以下操作,

    关闭 IntelliJ

    进入项目目录

    删除.idea/目录

    使用项目目录启动 IntelliJ

这将重新创建 .idea/ 目录,并且不再显示错误。

注意:当 .idea/ 目录被删除时,您添加的任何特定于存储库的 IntelliJ 设置都将被删除,并且将使用默认值重新创建它们。

【讨论】:

删除./idea文件夹是不是有点太苛刻了?您的所有设置都将消失。 是的,我同意它有点苛刻。所有存储库特定设置都将消失,但将保留自定义键盘映射等全局设置,因为它们存储在用户的主目录中。用注释更新了答案。【参考方案4】:

以下更改对我有用,希望对您也有用。

    在 pom.xml 文件中将 Java 的版本从 11 更改为 8 1.8

    转到,文件 -> 设置 -> 构建、执行、部署 -> 编译器 -> Java 编译器 在这里,在 Module 列中,您可以看到列出的项目,并且在 Target bytecode version 列中,已经指定了项目的 Java 版本(主要是 11),将其更改为 8

    转到,文件 -> 项目结构 -> 模块。在这里,在 Source 选项卡中,您可以看到 Language level 选项,选择 8 - Lambdas,键入注释等。最后,选择 Apply 和 OK,一切顺利。

【讨论】:

只有 #1 对我有用.. 尝试了很多解决方案,但都有效 这对我有用。即,更改了 pom 中的版本,然后还更改了 IntelliJ 中的这两个位置。不知道为什么 IntelliJ 中有 2 个位置需要指定 Java 版本。 pom.xml 路径在哪里? 嘿@MML,pom.xml 在项目本身的根级别中可用,例如 Your Project\pom.xml。展开你的项目你会看到 pom.xml @b-sangappa 我在 android studio 中切换到项目视图,但我找不到这个文件,我可以手动创建它吗?【参考方案5】:

请update IntelliJ IDEA 2018.x 以获得 Java 11 支持。您的 IntelliJ IDEA 版本在 Java 11 之前发布,不支持此 Java 版本。

【讨论】:

2020版也有同样的问题。所以这不是一个正确的答案或部分正确。您必须从项目结构中更改 sdk 版本。 @Zafar 这是原始问题的正确答案,并且 OP 已接受它。但此错误可能有多种原因,无法在单个答案中涵盖。 这不是正确的答案:) 或者至少不是完整的答案。您仍然可以使用较新的 IntelliJ 版本遇到此问题【参考方案6】:

2021 年 1 月 6 日

这对我有用。

转到文件 -> 项目结构并选择窗口右侧面板上的“依赖项”选项卡。然后像这样使用下拉菜单更改“模块 SDK”。然后应用更改。

【讨论】:

这解决了我谢谢,当模块在无效的 Java 版本中建立索引时可能会发生这种情况【参考方案7】:

Maven 也有可能使用不同版本的 JDK,在这种情况下,您可以将 Maven 设置为使用项目默认的 JDK 版本。

【讨论】:

这是一个非常有用的答案。!!【参考方案8】:

更新我的想法后遇到同样的错误,我解决了如下:

文件 >> 项目结构... >> 项目

“项目语言级别:”设置为“11 - lambda 参数的局部变量语法” 所以我将其更改为“SDK 默认值(8 - Lambdas,类型注释等)”然后应用更改 并且错误已解决。

【讨论】:

【参考方案9】:

在较新版本的 Intellij 中,检查 jdk 11 是否配置正确:

    右键单击您的项目,然后单击Open Module Settings。检查下面列出的设置: SDKs (Under Platform Settings) > Add the jdk 11 you want located on your computerModules (Under Project Settings) > Set language level to jdk 11 for sources and dependenciesProject (Under Project Settings) > Select jdk 11 as Project SDK。 然后File > Settings > Java Compiler。检查以下设置: 使用编译器:Javac 项目字节码版本:11 每个模块的字节码版本:所有模块的目标字节码版本必须设置为11

【讨论】:

【参考方案10】:

我最近遇到了同样的问题。 运行我的项目主文件后,此错误显示在我的屏幕上。 错误:java:无效的源版本:11 按照步骤解决此错误

    文件->项目结构->项目 点击Project SDK下的New按钮:添加最新的SDK并点击OK。

运行后你会看到错误已解决..

你可以看到它完美地工作.. 如果您发现任何问题,请联系我

【讨论】:

【参考方案11】:

如果你是Springboot,请检查pom.xml文件中的java版本

<properties>
   <java.version>11</java.version>
</properties>

如果此版本与您计算机的默认版本 (Java) 不匹配,则可能会发生该错误。

【讨论】:

我已经在除此处之外的所有地方进行了更改。感谢您指出这一点。【参考方案12】:

我遇到了这个问题,因为我目前正在将我的代码库升级到 JDK 11,并且正在分支中的 8 和 11 之间切换。看来 IntelliJ 不喜欢这样。

解决方案:

如果您在项目结构 (Ctrl+Shift+Alt+S) 中选择了正确的 JDK,但仍然出现错误,请使缓存 File &gt; Invalidate Caches / Restart... 无效。

重新启动 IDE 后,我的错误消失了。

【讨论】:

【参考方案13】:

我可以说我有类似的问题。我的情况:我在工作区中从新版本切换到旧版本的项目,尝试运行需要重新编译的单个 junit,重新编译错误抛出无效目标。

从 IntelliJ 中的项目设置 (F4) 中,一切看起来都不错,java 设置为 1.7。但是当我尝试从 IDE 重新编译时,由于目标级别错误而引发错误。检查后我发现在其中一个 iml 文件中的语言设置为 JDK_11。手动更改为 JDK_1_7 后一切恢复正常。

值得在 IDE 创建的 *iml 文件中手动检查语言级别。

【讨论】:

我可以像上面的 cmets 一样添加很好的检查选项:File -&gt; Settings -&gt; Build, Execution, Deployment -&gt; Compiler -&gt; Java Compiler 并查看目标代码是否设置正确。 这会继续回滚到以前的设置。是否有永久修复此问题的方法?这个配置可以粘在项目上吗? (如果有多个项目有多个Java版本,如何在代码中处理)【参考方案14】:

对我来说,我遇到了同样的问题,但它是 java v8,我在我的机器上为我的不同项目使用了不同版本的 java。在导入我的一个项目时,我遇到了同样的问题。为了检查配置,我检查了所有与 SDK 相关的设置,无论是在 File-&gt;Project-&gt;Project Structure / Modules 还是在运行/调试配置设置中。我设置为java-8 的所有内容,但我仍然遇到同样的问题。在检查所有配置文件时,我发现 .idea 中的 compiler.xml 有一个设置为 11 的 bytecodeTargetLevel 条目。在这里,如果我将其更改为 8,即使它显示相同的编译器输出并删除 &lt;bytecodeTargetLevel target="11" /&gt; 来自compiler.xml 解决问题。

【讨论】:

【参考方案15】:

我的项目模块设置为 8,但是 pom.xml 设置为 11。当我在模块中从 8 更改为 11 时,它起作用了。

【讨论】:

【参考方案16】:

在你的 pom.xml 文件里面 写“8”而不是写“11”,然后重新编译你的 pom.xml 文件 并且 tadaaaaaa 它有效!

【讨论】:

【参考方案17】:

我尝试了以上所有方法,发现了这个秘方

    确保 pom.xml 指定了您想要的 jdk。 确保 maven 指定了您想要的 jdk。 确保 Projects 指定了您所需的 jdk。 确保 Modules 指定您的整数 jdk 并且 Dependencies 指定您的 jdk。 hth。

【讨论】:

【参考方案18】:
1. pom.xml (start with this important)
    - <java.version>1.8</java.version>
    * Enable auto import on pop up
    * Wait until it loads

2. Project Structure
    - Project
        - Project SDK - 1.8 
        - Project language Level - 8
    - Modules
        - Sources
            - Language level - 8
            - Dependencies - Project SDK 1.8

3. Delete idea folder
4. Close window
5. Reopen window (make sure it loads at bottom)

【讨论】:

【参考方案19】:

2021 年 1 月 12 日

对我来说,重点是在我的 pom.xml 中明确指定版本为 java 11,我通过以下步骤解决了这个问题。

    打开终端并输入:java -version,然后我得到 1.8,然后我去 .bash_profile 将 java 版本切换到 11.2,因为我安装了多个 java 版本。请记住“重新启动”您的终端并再次检查您的 java 版本以确认切换成功。

    然后我转到 File -> Project Structure 以确保我的 IntelliJ 使用与我的 env 相同的版本,即 11.2。

    重新启动您的 Intellij,mvn clean install,已解决,希望这可以帮助遇到同样问题的人,谢谢。

【讨论】:

【参考方案20】:

如果你的项目是使用 gradle 构建的,你应该更新:

File > Settings > Build, Execution, Deployment > Build Tools > Gradle

并将Gradle JVM 更新为版本 11。

【讨论】:

【参考方案21】:

只是有同样的错误。问题是我有空的package-info.java file。一旦我在其中添加了包名,它就起作用了......

【讨论】:

【参考方案22】:

我也遇到同样的错误,我只是将 pom.xml 中的 java 版本从 11 更改为 1.8,它工作正常。

【讨论】:

【参考方案23】:

我也遇到了类似的错误,但在我的情况下是 Error:java: invalid source release: 11... 所以我只是将 java 11 的所有注释更改为 java 8,即使注释是 java 8,我就这样离开了。我希望它可以帮助您解决问题。

【讨论】:

【参考方案24】:

我更改了文件 -> 项目结构 -> 项目设置 -> 模块 在源选项卡中,我将语言级别从:14 或 11 设置为:“项目默认值”。这解决了我的问题。

【讨论】:

【参考方案25】:

我将这两行添加到 build.gradle 文件中

compileJava.options.fork = true
                                              
compileJava.options.forkOptions.executable = 'C:\\Program Files\\Java\\jdk-11.0.8'

它可以工作

我正在使用windows和我的基于gradle的项目

我的 jdk 路径 -> 'C:\Program Files\Java\jdk-11.0.8'

请提供您的 jdk 路径

【讨论】:

【参考方案26】:

试试这个

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

【讨论】:

【参考方案27】:

以上方法我都试过了

gradle jvm 版本,java 编译器字节码版本,模块语言。

我将以上所有内容都设置为 java 8(或 1.8),因为那是我机器上的库。还是不行。

问题是 build.gradle 文件有

sourceCompatibility = '11'

将此更改为 8 并停止抛出“compile failed invalid release 11”错误

解决方案参考:github forum

【讨论】:

【参考方案28】:

我遇到了同样的 java 11 目标错误,我的问题是 maven-compiler-plugin 过时的版本。 升级到最新版本,一切正常

【讨论】:

【参考方案29】:

gradle.properties 中为 Java 主页设置正确的路径为我解决了这个问题

gradle 属性路径:C:\Users.gradle\gradle.properties

org.gradle.java.home=yourjdk11homepath
Example : org.gradle.java.home=C\:/Program Files/Java/jdk-11.0.8

【讨论】:

以上是关于错误:Java:无效的目标版本:11 - IntelliJ IDEA的主要内容,如果未能解决你的问题,请参考以下文章

一篇让你彻底解决java:无效的目标发行版: 11或其它版本

为啥当我尝试将我的 Spring Boot 应用程序推送到 heroku 时它返回“致命错误编译:无效目标版本:11”

编译 Java 应用程序时目标版本无效

IntelliJ:致命错误编译:无效的目标版本:1.8

致命错误编译:无效的目标版本:9

错误:java:无效的源版本:Intellij 中的 8。这是啥意思?