IntelliJ使用错误的JDK版本从POM导入项目

Mat*_*ias 6 java android intellij-idea maven

我们有一个基于Maven的Android版本,我们刚刚从JDK 6切换到7.

然而,它带来了IntelliJ问题的一部分.每次检测到POM中的更改并重新导入/刷新项目时,它会返回选择旧的"模块SDK",即配置为使用Java 6的模块:

在此输入图像描述

即使我从"平台设置"对话框手动删除这些SDK,它们仍然会重新显示为"Maven Android API 19 Platform(N)",其中N是用于从所有其他(相同)SDK中消除歧义的数字.

我应该提一下,我们在POM中指定了Java 7的目标.我试图设置编译器插件语言级别和maven.compiler.*属性(不确定是否完成相同的事情),没有运气:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.1</version>
  <configuration>
    <source>1.7</source>
    <target>1.7</target>
  </configuration>
</plugin>
Run Code Online (Sandbox Code Playgroud)

IntelliJ应该选择并始终将项目配置为使用Java 7 SDK?我错过了什么吗?

我注意到当我在IntelliJ中完全删除对1.6 SDK的任何引用时问题就消失了.我猜这并不奇怪,但也不可行,因为我还有其他项目仍然依赖于Java 6 SDK的存在.

小智 5

我在使用 IntelliJ(在我的情况下为 14.x 版)创建的 Maven 项目中遇到了一个非常相似的问题。我已将 IntelliJ 配置为在项目设置中使用 JDK 8,但 IDE 继续突出显示我的代码中的问题(例如,抱怨使用@Override)。

事实证明,Maven 设置在这里优先,在我的情况下默认为 JDK 1.5(因此是 IDE 红线)。更改此处的设置确实可以解决问题,但只是暂时的,因为它们会在重新导入 Maven 项目或重新启动 IntelliJ 时恢复。

永久性修复是在您的 Maven pom 文件中显式声明 JDK 版本,如这些项目中所述。

@vikingsteve每次重新加载 pom(或更改默认项目语言级别)时,停止 IntelliJ IDEA 切换 java 语言级别

IDEA:javac:源版本 1.7 需要@bacchus 的目标版本 1.7

这是他们所说的您需要添加到 pom.xml 文件中的内容。

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>
Run Code Online (Sandbox Code Playgroud)

这些设置反映在 IDE 的 Maven 设置中,并为我解决了这个问题。


Sta*_*wed 1

它将选择您在项目结构中选择的jdk,请在那里更改它。

文件>项目结构>项目设置>项目>项目sdk选择1.7。

如果 1.7 不存在,请转到文件 > 项目结构 > 平台设置 > SDK 添加 1.7。

  • 好吧,我不想每次重新加载 POM 时都手动更改每个子模块......显然这是 IntelliJ 中的一个错误,那么是否有必要? (2认同)
  • 那不是问题。问题是,所有这些东西在重新导入后都会重置为 Java 6。 (2认同)