IntelliJ IDEA 2016.3无法使用java 7进行编译

时间:2016-12-06 13:33:28

标签: java intellij-idea

  • 我最近更新到IntelliJ IDEA 2016.3并且我注意到每当我选择了一个带有java 7 SDK的项目时,IntelliJ就会用java 1.8.0_112-release(必须是一个java)编译项目与IntelliJ捆绑在一起的编译器,因为我自己从未安装过它。

  • 如果我选择1.8.0_112版本以外的java 8 SDK,IntelliJ将使用该编译器进行编译。

  • 如果我选择了java 7 SDK并在我的项目中运行main方法,IntelliJ将使用该java 7 SDK版本运行,因此问题似乎只与编译器有关。

  • 我尝试重新安装所有的java安装。

  • 当我更改SDK时,我通常只会更改Project Structure -> Project -> Project SDK,但我也会验证语言级别是否正确且Project Structure -> Modules -> Dependencies -> Module SDK是否正确。

  • 默认情况下,所有设置均为:

    • Settings -> Build, Execution, Deployment -> Compiler/Java Compiler
  • 在我看来,IntelliJ IDEA 2016.3无法使用低于java 8的java编译器,但我的谷歌搜索尝试无法证实这一点。

  • 我还可以提一下,我还没有尝试过的唯一一件事是IntelliJ的硬卸载,我的所有设置都被擦除了。已尝试静默卸载。

  • 如果我尝试使用Java 7 SDK编译新的Hello World项目,则这是“消息”选项卡中的输出:Information:Using javac 1.8.0_112-release to compile java sources。但是,如果我将项目SDK设置为Java 8 SDK,则这是“消息”选项卡中的输出:Information:Using javac 1.8.0_45 to compile java sources

  • 尝试将Settings -> Build, Execution, Deployment -> Compiler -> Java Compiler -> Project bytecode version设置为1.7而没有任何效果。

  • File -> Other Settings -> Default Project Structure -> Project SDK and Project language level设置为Java 7 SDK。消息选项卡仍显示:Information:Using javac 1.8.0_112-release to compile java sources

有没有其他人经历过这种情况并知道导致这种行为的原因是什么?

3 个答案:

答案 0 :(得分:3)

Apparantley这是由IntelliJ中的问题引起的,如this中所述 问题。

自IntelliJ IDEA版本2016.3.1起已解决,我在youtrack问题中复制粘贴 Eugene Zhuravlev 中的注释,以解释它是如何修复的:

  

为javac引入了一个新的编译器选项:File |设置|构建,执行,部署|编译器| Java编译器| "尽可能使用模块目标JDK中的编译器"。 " on"的默认值为"。   当启用此属性并且与模块关联的JDK与构建自己的JDK不同时,构建将优先使用关联JDK中的javac进行编译,而不是使用运行的JDK中的编译器进行编译。

答案 1 :(得分:1)

您需要设置两件事:

CTRL + ALT + SHIFT + S - >项目 - > Project SDK

CTRL + SHIFT + A - >输入" Java编译器" - >目标字节码版本

答案 2 :(得分:1)

Project StructureDefault Project Structure之间存在分歧(后者适用于新创建/签出的项目)。

Default Project Structure隐藏在File -> Other Settings中。 你会有Project SDKProject Language Level