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 > Settings
、Compiler > 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<properties> <maven.compiler.source>1.8</maven.compiler.source> <maven.compiler.target>1.8</maven.compiler.target> </properties>
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 -> Build, execution, Deployment -> Maven -> 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】:可能导致此问题的另一件事是<parent>
项目的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的主要内容,如果未能解决你的问题,请参考以下文章