Maven:致命错误编译:无效的目标版本:1.8

Posted

技术标签:

【中文标题】Maven:致命错误编译:无效的目标版本:1.8【英文标题】:Maven: Fatal error compiling: invalid target release: 1.8 【发布时间】:2015-10-14 00:07:42 【问题描述】:

我们刚刚将项目从jdk 1.6 升级到jdk 1.8。在我的机器上构建项目时,出现以下错误。

[ERROR] 未能执行目标 org.apache.maven.plugins:maven-compiler-plugin:3.3:compile (默认编译)项目异常:致命错误编译:无效 目标版本:1.8 -> [帮助 1]

这里是使用的maven编译插件

 <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.3</version>
    <configuration>
        <source>1.8</source>
        <target>1.8</target>
        </configuration>
  </plugin>

我查看了许多帖子,其中大多数与没有为 java_home 配置正确版本有关。我验证了所有这些方面,没有发现任何令人担忧的地方。

Java 版本 -

 qadeersmsiphone:main pdubey$ java -version
 java version "1.8.0_51"
 Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
 Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)

Maven 版本 -

qadeersmsiphone:main pdubey$ mvn -version
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 08:22:22-0700)
Maven home: /usr/share/maven
Java version: 1.8.0_51, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.8.5", arch: "x86_64", family: "mac"

我在构建项目时检查了 maven 使用 jdk 1.8

qadeersmsiphone:main pdubey$ mvn install -debug
Apache Maven 3.1.1 (0728685237757ffbf44136acec0402957f723d9a; 2013-09-17 08:22:22-0700)
Maven home: /usr/share/maven
Java version: 1.8.0_51, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_51.jdk/Contents/Home/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "mac os x", version: "10.8.5", arch: "x86_64", family: "mac"
[INFO] Error stacktraces are turned on.
[DEBUG] Reading global settings from /usr/share/maven/conf/settings.xml
[DEBUG] Reading user settings from /Users/pdubey/.m2/settings.xml
[DEBUG] Using local repository at /Users/pdubey/.m2/repository
[DEBUG] Using manager EnhancedLocalRepositoryManager with priority 10.0 for  /Users/pdubey/.m2/repository
[INFO] Scanning for projects...

更新:我可以通过删除 pom文件中的maven-compiler-plugin(理想情况下,我不想这样做)。而且我还观察到即使我 去掉这个插件,maven默认下载3.3版本的 我本地仓库中的编译器插件。我不确定这有什么问题 插件虽然源和目标似乎是正确的。

【问题讨论】:

真的吗? “Apache Maven 3.1.1 (… 2013-09-17… @Holger 不知道 (..2013-09-17) 的意义是什么,但我从这里下载了 maven archive.apache.org/dist/maven/maven-3/3.1.1/binaries。请注意,我之前有 mac 的默认 maven (v3.0.3),我升级到 v3.1.1 它只是看起来比 Java 8 旧,但是,当然,这不是问题,只要编译器插件和调用的编译器可以处理请求的目标版本 1.8,他们显然不能。但是由于 Maven 版本是您发布的唯一版本号,我假设其他所有内容都与此一样古老。我不知道您的环境中还有什么其他障碍,但在您的情况下,我会尝试的第一件事是从这里下载:archive.apache.org/dist/maven/maven-3/3.3.3/binaries跨度> 对我来说,从 Maven 3.2.5 升级到 3.3.3 就成功了。 【参考方案1】:

检查 java 和 Javac 版本 - 我的 Java 版本是 1.8.0_51

$ java -version
java version "1.8.0_51"

但是 javac 版本指向的是旧 jdk 1.7.0_67

$ javac -version
javac 1.7.0_67

有几件事我们应该尝试 -

    确保符号链接指向正确的 jdk。如果没有,请删除现有链接并为您的 jdk 创建新链接

    cd /System/Library/Frameworks/JavaVM.framework/Versions/
    rm CurrentJDK
    ln -s /Library/Java/JavaVirtualMachines/<jdk version>.jdk/Contents/ CurrentJDK
    

    在 /Library/Java/Extension 中,我有一个 tools.jar。我相信,这是来自旧的 jdk。

    cd /Library/Java/Extensions
    -rw-r--r--  1 root  admin  15286304 Jan 14  2015 tools.jar
    

    删除这个

    sudo rm -rf /Library/Java/Extensions
    

第 2 点对我有用 :)

【讨论】:

谢谢你,终于!第 2 点也为我解决了这个问题。【参考方案2】:

有时这个问题与 maven 使用的 JAVA_HOME 有关。

在我的特殊情况下,我尝试启动一个install 目标并得到一个确切的主题消息。 然后我刚刚尝试了一个mvn -version 命令,我意识到它使用的是jdk7 然后我在控制台set JAVA_HOME=C:\Java\jdk8 中运行(我的jdk 路径,所以你自己的路径可能不同) 然后输入mvn clean install test,它终于正常工作了

祝你好运!

【讨论】:

对我来说就是这样mvn 使用了另一个版本。如果您使用的是 powershell,请运行:$env:JAVA_HOME="C:\java\jdk8【参考方案3】:

这里有同样的问题,但是当 maven 不断抛出这个错误时,我在 Eclipse 中使用了运行配置。通过在此处设置正确的 JDK 版本进行修复:

【讨论】:

【参考方案4】:

我遇到了同样的问题:

> java -version
java version "1.8.0_111"

>javac -version
javac 1.7.0.6

我检查了系统变量中的路径,jdk 没有更新到 jdk 8。 在我用正确的 jdk 更新了路径后,它起作用了。

【讨论】:

【参考方案5】:

在cent os中我们可以使用alternatives来切换版本。

alternatives --config javac
alternatives --config java

但是 MAVEN 使用 JAVA_HOME。

而且这个 JAVA_HOME 可以给个链接。

要么我们必须手动将 JAVA_HOME 指向新的 jdk 文件夹,要么手动删除/删除链接并从上述答案中再次创建一个新的相同链接。

从alternatives中我们可以得到jdk的路径

【讨论】:

【参考方案6】:

首先,肯定是版本问题。

在我的情况下: java -version 显示结果

java version "1.8.0_172"

并且 javac -version 正在显示

javac 1.8.0_172

但是:Maven 使用 JAVA_HOME 环境变量来获取您的 JDK 版本来构建项目并运行它是一个插件。所以我们必须检查它的方式是

echo %JAVA_HOME%

在我的情况下是

jdk1.7.0_172

因此,只需更改变量的路径即可解决问题。 希望它会为某人节省时间。

【讨论】:

以上是关于Maven:致命错误编译:无效的目标版本:1.8的主要内容,如果未能解决你的问题,请参考以下文章

IntelliJ:致命错误编译:无效的目标版本:1.8

Maven 未使用 Java 11 - 编译致命错误:目标版本无效:11

致命错误编译:无效的目标版本:9

编译致命错误:目标版本无效:12 -> [帮助 1]

maven编译java项目问题(主要针对idea)——Error:java: 无效的目标发行版: 1.8

将 1.8 Maven 项目更改为编译为 1.16 会产生“无效的目标版本 1.16”