【发布时间】:2015-01-07 05:01:35
【问题描述】:
我在 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
会不会是 Apple(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说什么? -
/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home/bin/javac --version说什么? -
你可能想检查你的 JAVA_HOME 和 $PATH 排序。通常,我会在 ~/.[bash_]profile 中像
export PATH=$JAVA_HOME/bin:$PATH那样做某事,以确保我的环境是健全的。