无法让Maven识别Java 1.8

我似乎无法让Maven使用Java 1.8。 使用1.8作为目标出现以下错误:

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

错误的原因是很明显的:Maven没有使用正确的Java版本:

 $ mvn -version Apache Maven 3.2.2 (45f7c06d68e745d05611f7fd14efb6594181933e; 2014-06-17T07:51:42-06:00) Maven home: /usr/local/Cellar/maven/3.2.2/libexec Java version: 1.7.0_51, vendor: Oracle Corporation Java home: /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre Default locale: en_US, platform encoding: UTF-8 OS name: "mac os x", version: "10.9.2", arch: "x86_64", family: "mac" 

但是安装的Java版本应该是1.8:

 $ java -version java version "1.8.0_20-ea" Java(TM) SE Runtime Environment (build 1.8.0_20-ea-b22) Java HotSpot(TM) 64-Bit Server VM (build 25.20-b21, mixed mode) 

并设置JAVA_HOME:

 $ echo $JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home 

我也试过这里的命令 (创buildmavenrc )。 我已经尝试了多次重新启动计算机,并且已经validation了env var被正确设置(它被设置为.bash_profile )。

Maven安装了Homebrew。

Java 1.8在Eclipse(使用m2e)中工作正常。 我只是无法让Maven在命令行上工作。

对我来说问题是,当我从jdk-8u25-macosx-x64.dmg安装时,安装并没有将/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK目录链接更新到新的1.8 JDK。 这可能不是原始问题的问题,但是当我遇到同样的错误信息时,这是我的解决scheme。

我不知道为什么安装程序没有链接它,并使事情更混乱,path是不同的,这取决于你是从Oracle还是苹果安装。 请参阅Mac OS X 10.6.7 Java Path当前JDK混淆

我做了以下来修复我的环境

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

事实certificate,我有一个被遗忘的~/.mavenrc文件,它已经设置了JAVA_HOME的值。

对于将来的读者,请查看以下位置以查找可能覆盖JAVA_HOME (按照优先级的升序排列):

  • ~/.bash_profile
  • ~/.bash_login
  • ~/.bashrc
  • ~/.profile
  • /etc/mavenrc
  • ~/.mavenrc

为我工作的解决scheme:

在Eclipse中,我的Maven构build中有一个错误的运行configuration。 去

运行configuration – > JRE [Tab]

并将运行时设置为Java 8。

我在CentOS 6.5系统上遇到了同样的问题。

java -version返回了Java 8版本,但是javac -version返回了Java 7版本。

我不得不运行以下命令来获取各种与Java相关的符号链接指向我的JDK 8安装:

 sudo alternatives --config java sudo alternatives --config javac sudo alternatives --config jre_openjdk sudo alternatives --config java_sdk_openjdk 

您的JAVA_HOME正在被其他地方覆盖。 在java调用之前尝试在mvn回显。

我有同样的问题,需要2个步骤才能正确:

  1. 确保JAVA_HOME设置正确指向JDK;
  2. eclipse中的JDK和JRE应指向相同的版本。

对我来说第一步是对的,第二步有问题。 在eclipse»项目的属性»构buildpath»安装JRE»指向JDK。

您正在使用1.8的早期访问版本。 现在已经发布了,你应该安装发布的版本。

检查你的maven安装,看看你是否有与之相关的configuration,指定一个特定的JDK。 偶尔会有一些包装脚本在maven启动之前重置JAVA_HOME,或者maven可执行文件在包装器中启动,该包装器引用可以将您绑定到特定JVM的configuration文件。

如果您在持续集成服务器中使用Maven,请务必检查它的设置,因为它可能会覆盖Maven使用的JDK。 对于Jenkins,我必须在常规设置中添加新的1.8 JDK,并configuration我的项目以使用它。