IntelliJ IDEA 13 使用 Java 1.5,尽管设置为 1.7

Posted

技术标签:

【中文标题】IntelliJ IDEA 13 使用 Java 1.5,尽管设置为 1.7【英文标题】:IntelliJ IDEA 13 uses Java 1.5 despite setting to 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和答案! :-) 重复***.com/questions/21747254/… 有3个地方需要更新。 (1) 文件 -> 设置(快捷键为 Ctrl+alt+s)然后“构建、执行、部署”>“编译器”>“Java 编译器”并将“目标字节码版本”更改为您想要的 Java 版本。 (2和3)另一个地方是在文件>项目结构(Ctrl+Alt+Shift+S)>“项目设置”>“项目”下更改项目SDK指向适当的Java版本并将项目语言级别设置为正确的版本。不幸的是,代码辅助只会为您更改语言级别,这对新项目来说很烦人。 如果我的项目中有 200 个模块,我需要花一整天的时间重新点击它们吗? 【参考方案1】:

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

也设置这个:

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

【讨论】:

并检查Java Compiler设置中的Additional command line parameters是否为空。 注意:第三件事(文件 -> 项目结构 -> 模块 :: 源代码)为我解决了这个问题。 如果使用Maven,需要修改pom:***.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://***.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 中,更改以下设置对我有用

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

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

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

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

【讨论】:

【参考方案13】:

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

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

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

    删除项目

    导入项目

【讨论】:

以上是关于IntelliJ IDEA 13 使用 Java 1.5,尽管设置为 1.7的主要内容,如果未能解决你的问题,请参考以下文章

如何在IntelliJ IDEA 13中搜索或导航到Java文件类型?

Intellij IDEA 13 基础设置

IntelliJ IDEA 13试用手记(附详细截图)

Intellij IDEA 13.1.3 打开多个窗口项目

Java 开发必装的 IntelliJ IDEA 插件

IntelliJ IDEA + AspectJ