无效的目标版本: 1.7。

121

我看过类似的问题,但还没有找到答案。

使用Maven编译,我得到:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile (default-compile) on project api: Fatal error compiling: invalid target release: 1.7 -> [Help 1]

这是pom.xml文件:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.0</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
        <encoding>UTF-8</encoding>
    </configuration>
</plugin>

Java编译器版本:

javac 1.7.0_25

Java版本:

java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

有什么想法是什么吗?


14
很可能Maven正在使用Java 6运行。 - Peter Lawrey
3
我会检查你的所有环境变量,看看是否有使用Java 6的情况。例如,Java 7可能在你的路径中,但我记得Maven使用JAVA_HOME或类似的变量。 - Peter Lawrey
36
执行mvn -version命令可以查看所使用的Java版本。 - JB Nizet
你说得对,mvn正在使用Java 1.6 - 我该如何更改呢? - Karan
1
将JAVA_HOME变量设置为JDK7的安装目录。 - JB Nizet
5个回答

159

您需要将JAVA_HOME设置为您的jdk7主目录,例如在Microsoft Windows上:

  • "C:\Program Files\Java\jdk1.7.0_40"

或者在OS X上:

  • /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home

71
在安装了jdk6和jdk7的Mac电脑上,可以在~/.profile文件中强制使用jdk7:export JAVA_HOME=$(/usr/libexec/java_home -v 1.7) - Hank
3
JDK8可以用于实现JDK7的兼容性。 - Wolfgang Fahl
3
请记得在 Mac 上重新加载 ~/.profile 文件,命令为:source ~/.profile - Caio Iglesias
这可能适用于许多事情,但对于Maven来说还不够,当然也不适用于maven编译器插件。请查看Mike在此问题中的答案: stackoverflow question 24705877 这个解决方案对我来说在命令行和eclipse中都有效。 此外,@LinGao在stackoverflow question 2503658中的回答以及使用$JAVACMD变量可能会有所帮助。 - Litome

42

除了设置 JAVA_HOME 环境变量,您还需确保在Maven运行配置中使用正确的JDK版本。进入 Run -> Run Configuration,选择 Maven Build 配置项,前往 JRE 选项卡并设置正确的 Runtime JRE。

Maven运行配置


+1,我知道我忘记更新了什么......对我来说,创建配置时的默认选项是“备用 JRE”。如果其他人遇到此问题,请确保您的 Maven 插件和配置已正确更新! - king14nyr
我已经设置了适合Java 8的正确JAVA_HOME,但是仍然存在这个问题。你解决了我的问题,谢谢! - dtortola

3
在IntelliJ IDEA中,当我导入一个之前使用Java 1.7正常运行的项目时,出现了问题。显然,我没有告诉IntelliJ我在我的电脑上安装了Java 1.7,因此它无法找到我的$JAVA_HOME
在Mac上,可通过以下步骤解决该问题:
右键单击模块|模块设置|项目,并通过在“项目SDK”中选择“新建”来添加1.7 SDK。
然后转到IntelliJ IDEA主菜单|首选项|Maven|运行程序,并选择正确的JRE。在我的情况下,它更新了正确的“使用项目SDK”,即现在是1.7。

请注意,至少在Mac上,Intellij有项目设置和首选项。我必须进入“设置”->“构建执行、部署”->“Java编译器”,然后根据需要设置项目的字节码版本。 - Opentuned

1
当Maven在Eclipse之外工作时,但在JDK更改后出现此错误,请转到您的Maven运行配置,并在Main页面底部找到'Maven Runtime'选项。我的使用了内置的Maven,所以在切换为使用外部Maven后,它就可以工作了。

请问Maven运行配置在哪里? - R Claven
1
右键单击您的build.xml,选择“运行为”,然后“运行配置”应该是最后一个选项。如果您滚动运行配置类型,其中之一是“Maven Build”,它有一个选择“Maven Runtime”的选项。旁边有一个“配置”按钮。 - djb

0

这可能适用于许多事情,但对于Maven来说还不够,当然也不适用于Maven编译器插件。

请查看Mike在此处对自己问题的回答: stackoverflow question 24705877

这对我解决了命令行和Eclipse内部的问题。

此外,@LinGao对stackoverflow question 2503658的回答以及使用$JAVACMD变量可能有所帮助,但我自己没有测试过。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接