无法让Maven识别Java 1.8

Kat*_*Kat 71 java maven

我似乎无法让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]
Run Code Online (Sandbox Code Playgroud)

错误的原因很明显: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"
Run Code Online (Sandbox Code Playgroud)

但是安装的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)
Run Code Online (Sandbox Code Playgroud)

并设置JAVA_HOME:

$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)

我也试过这里命令(创建mavenrc).我已尝试多次重启计算机,并已验证env var已正确设置(已设置.bash_profile).

Maven安装了Homebrew.

Java 1.8在Eclipse中运行良好(使用m2e).我只是不能让Maven在命令行上工作.

Kir*_*rby 55

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

我不知道为什么安装程序没有链接它并使问题更加混乱,路径是不同的,这取决于你是从Oracle还是Apple安装它.请参阅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
Run Code Online (Sandbox Code Playgroud)

  • 同样的问题,并修复"CurrentJDK"为我治愈了它. (4认同)

Kat*_*Kat 46

事实证明,我有一个被~/.mavenrc设置值的遗忘文件JAVA_HOME.

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

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


Bev*_*vor 27

对我有用的解决方案:

在Eclipse中,我的Maven构建中的运行配置有误.去

运行配置 - > JRE [Tab]

并将运行时设置为Java 8.


Abd*_*ull 25

我在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
Run Code Online (Sandbox Code Playgroud)

  • 就我而言,它是 **sudo update-alternatives --config javac** 你确定“alternatives”不是一个错字吗? (2认同)

Jig*_*shi 13

JAVA_HOME被其他地方覆盖了.mvn在java调用之前尝试回显.