【发布时间】:2014-06-05 19:40:39
【问题描述】:
我在 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 的内容是一系列文件(不是符号链接)。
> 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)
编辑
根据this answer 的建议,我对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
然后我重新下载了fresh copy the installer 并运行它。
> java -version
java version "1.8.0_05"
> javac -version
javac 1.7.0_21
更新
我尝试删除所有 JDK、XCode 和所有开发人员工具,然后重新安装。 结果相同。
但是,我仍然不知所措——我该去哪里?如何安装 javac 1.8?
【问题讨论】:
-
不确定这是否有帮助,但尝试卸载与 JDK/JRE 相关的所有内容并尝试全新安装 JDK/JRE 参考 askubuntu.com/questions/84483/how-to-completely-uninstall-java
-
你能试试
/usr/libexec/java_home -v 1.8.0_05 --exec javac -version吗? -
@AnthonyAccioly 逐字逐句执行您的命令:
javac 1.7.0_21 -
@VD' :我试过了,从我的机器上删除了所有 JDK。我还应该采取其他步骤吗?
-
只是为了确定,您可以删除 jdk 1.8 并重试吗?如果它仍然找到 javac 1.7.0,那么你的 PATH 有一些奇怪的东西,否则它可能是@skiwi 建议的情况(不幸的是我无法重现)。