我从Oracle官网下载了JDK 8_u5并运行了安装程序。
安装后,我还执行了以下步骤:
> export JAVA_HOME=`/usr/libexec/java_home -v 1.8` (Executed in my .bashrc file)
> echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
> javac -version
javac 1.7.0_21
> $JAVA_HOME/bin/javac -version
javac 1.7.0_21
> $JAVA_HOME/bin/java -version
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)
我已经卸载了Java 1.7(以及所有其他JDK版本),然后重新运行了安装程序:
> ls /Library/Java/JavaVirtualMachines
jdk1.8.0_05.jdk
仍然无法使用,javac 报告版本为 1.7.0_21。
> which javac
/usr/bin/javac
> ls -ltra /usr/bin/javac
[snipped] /usr/bin/javac -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javac
在该路径中,
Current
是指向 A
的符号链接。 A/Commands
的内容是一系列文件(而不是符号链接)。> cd A/Commands
> ./javac -version
javac 1.7.0_21
> ./java -version
java version "1.8.0_05"
Java(TM) SE Runtime Environment (build 1.8.0_05-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.5-b02, mixed mode)
编辑
根据原帖,我使用了jenv进行了一些挖掘,正如这个回答中所建议的。
> jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
> jenv global oracle64-1.8.0.05
> jenv version
oracle64-1.8.0.05 (set by /Users/martypitt/.jenv/version)
> jenv info java
Jenv will exec : /Users/martypitt/.jenv/versions/oracle64-1.8.0.05/bin/java
> jenv info javac
Jenv will exec : /Users/martypitt/.jenv/versions/oracle64-1.8.0.05/bin/javac
> javac -version
javac 1.7.0_21
这让我怀疑这是一个随机的javac潜伏在我的路径中,并且以某种方式被调用。
为了确保,我已经彻底删除了Java,并重新尝试了一遍:
> cd /Library/Java/JavaVirtualMachines
> ls
jdk1.7.0_55.jdk
jdk1.8.0_05.jdk
> sudo rm -rf *
> ls
<<empty>>
> java -version
java version "1.6.0_65"
> javac -version
javac 1.6.0_65
> which javac
/usr/bin/javac
我随后重新下载了新的安装程序并运行了它。
> java -version
java version "1.8.0_05"
> javac -version
javac 1.7.0_21
更新
我尝试移除所有JDK、XCode和开发者工具,然后重新安装。
但是,我仍然不知所措——接下来该怎么办?如何安装javac 1.8?
/usr/libexec/java_home -v 1.8.0_05 --exec javac -version
吗? - Anthony Accioly/Library/Java/JavaVirtualMachines
目录下只包含jdk1.8.0_05。 - nneonneo