首页 文章

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

提问于
浏览
9

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

[错误]无法执行目标org.apache.maven.plugins:maven-compiler-plugin:3.3:编译(默认编译)项目异常:致命错误编译:无效目标版本: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版本的编译器插件 . 虽然源和目标似乎是正确的,但我不确定这个插件有什么问题 .

4 回答

  • 12

    检查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点为我做了诀窍:)

  • 0

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

    • 在我的特殊情况下,我尝试启动一个 install 目标,并准确地显示了subj消息 .

    • 然后我尝试了 mvn -version 命令,我意识到它使用了jdk7

    • 然后我在控制台中运行 set JAVA_HOME=C:\Java\jdk8 (我的jdk路径,所以你自己可能会有所不同)

    • 然后键入 mvn clean install test ,它最后只用 fine

    祝好运!

  • 4

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

    Run Configuration image

  • 1

    我遇到过同样的问题:

    > java -version
    java version "1.8.0_111"
    
    >javac -version
    javac 1.7.0.6
    

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

相关问题