升级到Java8后,javac仍显示1.7 [英] After upgrading to Java8, javac still shows 1.7
问题描述
我在OSX上从JDK 1.7升级到问题 - > 1.8。升级已经完成,但javac仍然会返回1.7作为版本。
I'm having issues upgrading from JDK 1.7 -> 1.8 on OSX. The upgrade has completed, but javac still returns 1.7 as the version.
我已经下载了 JDK 8_u5 ,并运行安装程序。
I've downloaded JDK 8_u5 from Oracle's homepage, and run the installer.
我还在安装后采取了以下步骤:
I've also taken the following steps, post-install:
> 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版本),然后重新运行安装程序:
I've gone through and removed Java 1.7 (and all other JDK versions), and then re-run the installer:
> ls /Library/Java/JavaVirtualMachines
jdk1.8.0_05.jdk
仍然没有用, javac将版本报告为1.7.0_21
Still no use, javac reports the version as 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
在该路径中,当前
是 A
的符号链接。 A / Commands
的内容是一系列文件(不是符号链接)。
Within that path, Current
is a symlink to A
. The contents of A/Commands
are a series of files (not symlinks).
> 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)
编辑
继原始帖子之后,我已经根据
Edit
Further to the original post, I've done some digging with jenv, as suggested on this answer.
> 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潜伏在我的路径中,它以某种方式被调用。
This casts dispersions on my thoughts that this was a random javac lurking in my path, which was somehow getting invoked.
可以肯定的是,我完全修改了我的Java,并再次尝试:
To be sure, I've nuked my Java completely, and tried again:
> 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和所有开发人员工具,然后重新安装。
相同的结果。
Update
I tried removing all JDK's, XCode and all developer tools, and re-installed fresh. Same results.
然而,我仍然处于亏损状态 - 我从哪里开始?如何安装javac 1.8?
However, I'm still at a loss -- where do I go from here? How do I get javac 1.8 to get installed?
推荐答案
如果 / usr / libexec / java_home -v 1.8.0_05 --exec javac -version
返回正确的版本,然后您的问题是:
If /usr/libexec/java_home -v 1.8.0_05 --exec javac -version
returns the correct version, then your problem is with:
/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
同时检查答案,用于动态切换JDK版本。
Also check this answer on Super User for dynamically switching JDK versions.
更新:强>我想我找到了culpr它!
Update: I guess I've found the culprit!
试试这个:
rm -rf ~/Library/Java/Extensions
sudo rm -rf /Library/Java/Extensions
解决方案见于: OSX 10.9.2上的Java 1.7运行为1.5?
这篇关于升级到Java8后,javac仍显示1.7的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!