为什么Maven在使用Fish运行时使用了错误的JDK版本?

时间:2017-10-04 11:59:17

标签: java maven fish

我运行macOS Sierra,并安装了Fish shell(https://fishshell.com/)。

当我尝试构建一个Maven项目时,它现在给了我

Fatal error compiling: invalid target release: 1.8 ->

...这意味着它已经选择了一个旧的JDK,它试图用它来构建我的Java 8项目。

通过运行mvn -version

可以明显看出这一点
...
Java version: 1.6.0_65, vendor: Apple Inc.
Java home: /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
...

但我已正确设置JAVA_HOME,两个shell中的echo $JAVA_HOME都会给我:

/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home

java -version给了我

java version "1.8.0_112"
Java(TM) SE Runtime Environment (build 1.8.0_112-b16)

javac -version

javac 1.8.0_112

echo $PATH在两个shell中给出相同的结果(除了在Bash中,目录由:分隔;在Fish中,空格):

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/Server.app/Contents/ServerRoot/usr/bin:/Applications/Server.app/Contents/ServerRoot/usr/sbin

我已将maven-compiler-plugin配置为1.8:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.6.0</version>
  <configuration>
    <source>1.8</source>
    <target>1.8</target>
    <encoding>${project.build.sourceEncoding}</encoding>
  </configuration>
</plugin>

为什么Maven坚持使用1.6 JDK?当通过Bash运行时,同样的项目构建正常,具有正确的1.8 JDK。

1 个答案:

答案 0 :(得分:1)

如果您运行的是旧版本的maven,请尝试更新到最新版本(3.5.0),例如通过自制程序(brew install maven)。