IntelliJ IDEA 13设置为1.7仍使用Java 1.5


147

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

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

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


8
试过了:File -> Project Structure -> Project :: Project language level改为Diamonds, ARM, multi-catch etc
亚当·沙哈波夫

39
是。事实证明,在文件->项目结构->模块::源(路径和依赖项旁边)下还有另一个选项,并且具有“语言级别”选项,该选项也需要正确设置。谢谢大家的评论和回答!:-)
PNS 2014年


33
有3个地方需要更新。(1)在“文件”->“设置”中(快捷键为Ctrl + alt + s),然后选择“构建,执行,部署“>编译器> Java编译器,并将“目标字节码版本”更改为所需的Java版本。(2和3)另一个位置在“文件”>“项目结构”(Ctrl + Alt + Shift + S)>“项目设置”>“项目”下,将Project SDK更改为指向相应的Java版本,然后将Project语言级别设置为正确的版本。不幸的是,代码帮助只会更改您的语言级别,这会使新项目烦恼。
8bitme,2015年

2
如果我的项目中有200个模块,我要整天重新点击它们怎么办?

Answers:


114

如果这没有帮助(我的情况),则可以在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


4
是个好主意,但是除非您想炸掉所有队友的设置,否则不要将硬替代项提交到共享项目中
quaintm 2016年

8
这为我解决了问题,谢谢!如何“打击队友的设置”?如果项目的目标是1.7,则为1.7。并非每个队友都有不同的目标环境。
isapir

1
太好了,我的项目是Maven项目。
huuthang

1
对于新的Maven项目,可以在默认的Maven项目中添加此设置。使用首选项| 编辑器 文件和代码模板| Maven | Maven Projects.xml <properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties> InteliJ支持论坛
pRmdk

这确实为我工作。但是,只有当我重新启动IntelliJ时,我才尝试仅重建项目,而那是行不通的。
Metin Dagcilar'Dec 19''17

155

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

还要设置这个:

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


2
并检查是否Additional command line parametersJava Compiler设置为空。
NeplatnyUdaj 2014年

2
注意:第三件事(文件->项目结构->模块::源)是为我解决的。
彼得

此过程的有用屏幕快照位于以下答案:stackoverflow.com/a/21747329/1146608
Patrick M

1
如果使用Maven,则需要修改pom:stackoverflow.com/questions/27037657/…–
Benj

11
+1为语言级别。这里不应该有这么多的地方设置并重新设定和再重新设置相同#$%^事情!
G. Ann-SonarSource小组

52

[对于IntelliJ IDEA 2016.2]

我想用最新的屏幕截图扩展Peter Gromov的答案。具体来说,这部分内容:

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

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

每个模块的字节码版本


5
我放弃了将它们保持在正确的数量上(出于某种原因,它们会发生变化,我会假设这样做git checkout)。我发现我可以安全地删除此列表中的条目。该模块将退回到使用“项目字节码版本”。
Birchlabs

这些数字对我来说也意外地恢复为1.5。只有对pom.xml文件中的编译器源版本和目标版本进行硬编码才能始终如一地工作。
sheldonkreger

请注意此屏幕截图顶部附近的“项目字节码版本”设置,以及突出显示的“目标字节码版本”。
罗勒·布尔克

@Birchlabs谢谢,我认为这是正确的答案。
chrips

1
这是固定的问题对我来说唯一的解决方案,IntelliJ IDEA的2019.1
若奥·罗查·达席尔瓦

19

另外,您可以通过将maven-compiler-plugin添加到pom.xml来应用适当的Java版本:

<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文件夹和.i​​ml文件,在再次打开项目时都将重新创建所有文件,此方法将起作用。
安德鲁

1
在构思中按“刷新Maven”按钮应该起作用。
奥尔加·麦克亚塞克(OlgaMaciaszek)

必须使用@OlgaMaciaszek刷新才能运行该解决方案。谢谢!
Payne

14

我尝试对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。

但是,将以下行添加到root(项目级别)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>

10

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

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

使用下拉菜单更改级别


4

在命令行(Unix终端)中,转到项目根文件夹,然后执行此操作

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

这会将所有项目.iml文件中的language level属性从Java 1.5更改为Java 1.8。


尚不确定,但您可能还需要compiler.xml在项目的根目录(IntelliJ 2017.2)中替换JDK版本:sed 's/target="1.5"/target="1.8"/g' .idea/compiler.xml
Oleksandr Volynets

editor.xml可能特定于您的项目。此命令仅针对intellij仅需要的* .iml文件。您可能必须在独立于IDE的maven pom.xml或您的情况下的compile.xml中调整语言设置。
赛义德·桑巴拉茹

1
我看到的任何可构建想法项目中都存在@SaideepSambaraju Compiler.xml。从我看来,该文件是Settings-> compiler(linux)Preferences-> Compiler(MacOS)的模型。您可以使用它来更改目标版本(如Oleksandr所说),也可以不使用UI来手动更改目标版本。
Sergey Sargsyan

@SergeySargsyan-我刚刚检查了一下它,它位于我无法通过搜索找到的.idea文件夹中。感谢您指出。
Saideep Sambaraju


2

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

事实证明,我在项目所依赖的Maven的settings.xml中有远程存储库设置,但是Intellij使用他自己的maven,它与本地Maven的设置不同。

因此,我的解决方案是将Intellij的Maven设置(Settings -> Build, execution, Deployment -> Maven -> Maven home directory)更改为使用本地Maven。


2

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

  1. 使用下拉列表将File-> Project structure-> Project Settings-> Project-> Project Language级别更新为Java 11(更新为您希望在项目中使用的Java版本)。

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

  3. 将File-> Settings-> Build,Execution,Deployment-> Compiler-> Java Compiler-> Project ByteCode Version更新为Java 11。

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


0

我在IntelliJ 2017中为我使用了以下属性

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

仅当您使用诸如Spring Boot的父项目时,此方法才有效。
wggn

0

可能导致此问题的另一件事是错误version<parent>项目。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.