我在Mac OS X上安装了JDK 1.8.0_25。当尝试编译Java 8源代码时,它会报错:
> javac -source 1.8 ComposableList.java
javac: invalid source release: 1.8
我确定我正在使用Java 8 JDK编译器运行:
> which javac
/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/javac
> java -version
java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)
然而javac显示是1.7版本。
> javac -version
javac 1.7.0_60
苹果(或Oracle)是否将错误版本的编译器与JDK捆绑在一起?还是我做错了什么?
编辑:无论我的$PATH中是否包含任何java目录,结果都是相同的(通常不包含):
> which java
/usr/bin/java
> which javac
/usr/bin/javac
编辑 2:我发现一个奇怪的事情,无论我使用哪个编译器,报告的javac编译器版本都是相同的:
> /Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home/bin/javac -version
javac 1.7.0_60
> /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin/javac -version
javac 1.7.0_60
> /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/javac -version
javac 1.7.0_60
编辑3: 正如@dan所建议的那样,所有的javac都可以成为一个符号链接吗?不,事实证明它们没有符号链接:
>ls -l /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/javac
-rwxrwxr-x 1 root wheel 99376 Sep 17 17:13 /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/javac
> ls -l /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin/javac
-rwxrwxr-x 1 root wheel 99360 Mar 18 2014 /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home/bin/javac
echo $PATH
的输出是什么? - damian/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/javac --version
说了什么? - njzk2export PATH=$JAVA_HOME/bin:$PATH
的操作,以确保我的环境是正常的。 - Markus W Mahlberg