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

时间:2015-07-23 15:17:02

标签: java maven java-8

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

  

[错误]无法执行目标   org.apache.maven.plugins:Maven的编译器插件:3.3:编译   项目异常时的(default-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版本   我本地仓库中的编译器插件。我不确定这有什么不对   插件虽然源和目标似乎是正确的。

6 个答案:

答案 0 :(得分:13)

检查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

我们应该尝试一些事情 -

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

    cd /System/Library/Frameworks/JavaVM.framework/Versions/
    rm CurrentJDK
    ln -s /Library/Java/JavaVirtualMachines/<jdk version>.jdk/Contents/ CurrentJDK
    
  2. 在/ 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
    
  3. 第2点为我做了诀窍:))

答案 1 :(得分:6)

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

  • 在我的特定情况下,我尝试启动install目标,并准确地显示了subj消息。
  • 然后我尝试了一个mvn -version命令,我意识到它使用了jdk7
  • 然后我在控制台set JAVA_HOME=C:\Java\jdk8中运行(我的jdk路径,所以你自己可能会有所不同)
  • 然后键入mvn clean install test,最后罚款
祝你好运!

答案 2 :(得分:1)

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

Run Configuration image

答案 3 :(得分:0)

我有同样的问题:

> java -version
java version "1.8.0_111"

>javac -version
javac 1.7.0.6

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

答案 4 :(得分:0)

在cent os中,我们可以使用其他方式来切换版本。

alternatives --config javac
alternatives --config java

但是MAVEN使用JAVA_HOME。

此JAVA_HOME可以链接。

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

从替代方法中,我们可以获得jdk的路径

答案 5 :(得分:0)

首先,这绝对是版本问题。

在我的情况下: 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

因此只需更改变量的路径即可解决此问题。 希望可以节省时间给别人。