我运行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。
答案 0 :(得分:1)
如果您运行的是旧版本的maven,请尝试更新到最新版本(3.5.0),例如通过自制程序(brew install maven
)。