【问题标题】:IntelliJ IDEA 13 uses Java 1.5 despite setting to 1.7IntelliJ IDEA 13 使用 Java 1.5,尽管设置为 1.7
【发布时间】:2014-01-27 04:08:21
【问题描述】:

尽管在所有项目设置中指定了 JDK 1.7(包括在 File -> Project Structure -> Project :: Project SDK 中),但在尝试编译一些使用菱形运算符的简单 Java 7 代码时,IntelliJ 13 会产生以下错误:

java: diamond operator is not supported in -source 1.5
(use -source 7 or higher to enable diamond operator)

配置中是否还有其他位置应启用预期的-source 7 选项?

【问题讨论】:

  • 试过了:File -> Project Structure -> Project :: Project language level 改成Diamonds, ARM, multi-catch etc ?
  • 是的。事实证明,在 File -> Project Structure -> Modules :: Sources 下还有另一个选项(在路径和依赖项旁边),并且有一个“语言级别”选项,也需要正确设置。谢谢大家的cmets和答案! :-)
  • 有3个地方需要更新。 (1) 文件 -> 设置(快捷键为 Ctrl+alt+s)然后“构建、执行、部署”>“编译器”>“Java 编译器”并将“目标字节码版本”更改为您想要的 Java 版本。 (2和3)另一个地方是在文件>项目结构(Ctrl+Alt+Shift+S)>“项目设置”>“项目”下更改项目SDK指向适当的Java版本并将项目语言级别设置为正确的版本。不幸的是,代码辅助只会为您更改语言级别,这对新项目来说很烦人。
  • 如果我的项目中有 200 个模块,我需要花一整天的时间重新点击它们吗?

标签: java intellij-idea compilation


【解决方案1】:

请检查您的项目/模块语言级别(项目结构 | 项目;项目结构 | 模块 | 模块名称 | 来源)。您可能还想看看设置 |编译器 | Java 编译器 |每个模块的字节码版本。

也设置这个:

文件 -> 项目结构 -> 模块 :: 源(在路径和依赖项旁边)并且具有“语言级别”选项,该选项也需要正确设置。

【讨论】:

  • 并检查Java Compiler设置中的Additional command line parameters是否为空。
  • 注意:第三件事(文件 -> 项目结构 -> 模块 :: 源代码)为我解决了这个问题。
  • 如果使用Maven,需要修改pom:stackoverflow.com/questions/27037657/…
  • 语言级别+1。 不应该有这么多地方可以设置、重新设置和重新设置相同的#$%^ 东西!
  • “设置 | 编译器 | Java 编译器 | 每模块字节码版本”救了我!
【解决方案2】:

首先需要更改File > SettingsCompiler > Java Compiler下的“项目字节码版本”

其次,进行全面重建。

【讨论】:

    【解决方案3】:

    如果这些都没有帮助(我的情况),您可以在 pom.xml 中设置它,如下所示:

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

    正如这个很酷的家伙在这里提到的: https://stackoverflow.com/a/25888116/1643465

    【讨论】:

    • 好主意,但不要将硬覆盖提交给共享项目,除非您想破坏所有队友的设置
    • 这解决了我的问题,谢谢!怎么会“爆破队友设定”?如果项目的目标是 1.7,那么它就是 1.7。并不是每个队友都有不同的目标环境。
    • 太好了,我的是 maven 项目。
    • 对于新的 maven 项目,可以在默认的 maven 项目中添加此设置。使用 首选项 |编辑 |文件和代码模板 |马文 | Maven Projects.xml &lt;properties&gt; &lt;maven.compiler.source&gt;1.8&lt;/maven.compiler.source&gt; &lt;maven.compiler.target&gt;1.8&lt;/maven.compiler.target&gt; &lt;/properties&gt; InteliJ Support Forum
    • 这对我有用。但是只有当我重新启动 IntelliJ 时,我才尝试单独重建项目,但没有奏效。
    【解决方案4】:

    或者,您可以通过将其添加到您的 pom.xml 中来应用具有适当 java 版本的 maven-compiler-plugin:

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
    

    【讨论】:

    • 这在退出项目删除 .idea 文件夹和 .iml 文件后工作,所有这些在再次打开项目时都会重新创建。
    • 在idea中按下“刷新Maven”按钮应该可以了。
    • @OlgaMaciaszek 需要刷新才能使解决方案正常工作。谢谢!
    【解决方案5】:

    [适用于 IntelliJ IDEA 2016.2]

    我想用最新的屏幕截图扩展Peter Gromov's answer 的一部分。 特别是这个特定的部分:

    您可能还想看看设置 |编译器 | Java 编译器 |每个模块的字节码版本。

    我相信(至少在 2016.2 中):检查 git 中的不同提交会将这些重置为 1.5。

    【讨论】:

    • 我放弃了以正确的数字维护它们(出于某种原因,它们发生了变化——我假设当我这样做时git checkout)。我发现我能够安全地删除此列表中的条目;该模块回退到使用“项目字节码版本”。
    • 这些数字对我来说也意外地恢复到 1.5。只有在 pom.xml 文件中对编译器源和目标版本进行硬编码才能始终如一地工作。
    • 请注意此屏幕截图顶部附近的“项目字节码版本”设置,以及突出显示的“目标字节码版本”。
    • @Birchlabs 谢谢,我认为这是正确的答案。
    • 这是为我解决问题的唯一解决方案,IntelliJ IDEA 2019.1
    【解决方案6】:

    我有同样的问题,但情况不同。我可以在命令行中使用 maven (mvn clean install) 毫无问题地进行编译,但是在 Intellij 中,尽管我在 pom.xml 中使用 java 1.8 设置了 maven-compiler-plugin,但在 Intellij 中我总是遇到 "java: diamond operator is not supported in -source 1.5" 编译错误。

    原来我在项目所依赖的 maven 的 settings.xml 中有远程存储库设置,但是 Intellij 使用他自己的 maven,它与我的本地 maven 没有相同的设置。

    所以我的解决方案是更改 Intellij 的 maven 设置 (Settings -&gt; Build, execution, Deployment -&gt; Maven -&gt; Maven home directory) 以使用本地 maven。

    【讨论】:

      【解决方案7】:

      我尝试对 Intellij IDEA 进行如下更改:

      1.

      File >> Settings >> Build, Execution, Deployment >> Compiler >> Java Compiler >> project bytecode version: 1.8 >> Per-module bytecode version: 1.8
      

      2.

      File >> Project Structure >> Project Settings >> Project >> SDK : 1.8, Project Language : 8 - Lambdas
      File >> Project Structure >> Project Settings >> Modules >> abc : Language level: 8 - Lambdas
      

      但没有任何效果,我一保存它就将版本恢复为 java 1.5。

      但是,将以下行添加到根(项目级别) pom.xml 让我解决了上述问题:(这两个选项都对我有用)

      选项 1:

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

      选项 2:

      <build>
          <plugins>
              <plugin>
                  <groupId>org.apache.maven.plugins</groupId>
                  <artifactId>maven-compiler-plugin</artifactId>
                  <configuration>
                      <source>1.8</source>
                      <target>1.8</target>
                  </configuration>
              </plugin>
          </plugins>
      </build>
      

      【讨论】:

        【解决方案8】:

        在你的命令行(Unix 终端)进入你的项目根目录,然后这样做

        find . -type f -name '*.iml' -exec sed -i '' s/JDK_1_5/JDK_1_8/g {} +
        

        这会将您所有项目 .iml 文件中的语言级别属性从 java 1.5 更改为 java 1.8。

        【讨论】:

        • 不确定,但您可能还需要在项目根目录 (IntelliJ 2017.2) 的 compiler.xml 中替换 JDK 版本:sed 's/target="1.5"/target="1.8"/g' .idea/compiler.xml
        • compiler.xml 可能特定于您的项目。此命令仅针对仅 intellij 需要的 *.iml 文件。您可能需要调整 maven pom.xml 或您的情况下独立于 IDE 的 compiler.xml 中的语言设置。
        • @SaideepSambaraju compiler.xml 存在于我看到的任何可构建创意项目中。据我所知,这个文件是 Settings->compiler (linux) Preferences->Compiler (MacOS) 的模型。您可以使用它通过脚本更改目标版本,如 Oleksandr 所说,也可以在没有 UI 的情况下手动更改。
        • @SergeySargsyan - 我刚刚检查过,它位于 .idea 文件夹中,我无法通过搜索找到它。感谢您指出。
        【解决方案9】:

        文件->项目结构->项目设置->项目->项目语言级别

        文件->项目结构->项目设置->模块->语言级别

        使用下拉菜单更改级别

        【讨论】:

          【解决方案10】:

          我在 IntelliJ 2017 中有以下属性为我工作

            <properties>
                  <java.version>1.8</java.version>       
            </properties>
          

          【讨论】:

          • 这仅在您使用像 spring boot 之类的父项目时才有效。
          【解决方案11】:

          可能导致此问题的另一件事是&lt;parent&gt; 项目的version 不正确。

          在我的情况下,它指向一个不存在的项目,由于某种原因,IntelliJ 将设置中的版本降级为 1.5,后来当我修复它时,它仍然将目标代码版本解释为 5(尽管将其设置为 11)。

          【讨论】:

            【解决方案12】:

            在 IntelliJ Community Edition 2019.02 中,更改以下设置对我有用

            1. 使用下拉菜单更新文件->项目结构->项目设置->项目->项目语言级别到 Java 11(更新到您希望在项目中使用的 Java 版本)。

            2. 更新文件->项目结构->项目设置->模块->语言级别

            3. Update File->Settings->Build,Execution,Deployment -> Compiler -> Java Compiler-> Project ByteCode Version to java 11.

            4. 更新文件->设置->构建、执行、部署->编译器->Java编译器->每个模块字节码版本下所有条目的目标版本。

            【讨论】:

              【解决方案13】:

              我设法通过更改新项目的设置来解决此问题:

              1. 文件 -> 新项目设置 -> 新项目设置 -> Java 编译器 -> 设置版本

              2. 文件 -> 新项目设置 -> 新项目的结构 -> 项目 -> 设置项目 SDK + 设置语言级别

              3. 删除项目

              4. 导入项目

              【讨论】:

                猜你喜欢
                • 2013-11-22
                • 1970-01-01
                • 2013-12-27
                • 2014-06-17
                • 1970-01-01
                • 2014-01-18
                • 1970-01-01
                • 2013-09-24
                • 2014-06-04
                相关资源
                最近更新 更多