我在OSX上从JDK 1.7-> 1.8升级时遇到问题。升级已完成,但是javac仍返回1.7作为版本。
我已经从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是一系列文件(不是符号链接)。
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返回正确的版本,则您的问题在于:
/usr/libexec/java_home -v 1.8.0_05 --exec javac -version
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
使用特权用户执行:
cd /System/Library/Frameworks/JavaVM.framework/Versions/ rm CurrentJDK ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/ CurrentJDK
在 Mankeh博客中 找到的解决方案
还要在超级用户上检查此答案以动态切换JDK版本。
更新: 我想我找到了罪魁祸首!
试试这个:
rm -rf ~/Library/Java/Extensions sudo rm -rf /Library/Java/Extensions
解决方案位于: OSX 10.9.2上的Java 1.7以1.5运行?