java 8的javac是,升级到Java8后,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.

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)

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

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

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

This casts dispersions on my thoughts that this was a random javac lurking in my path, which was somehow getting invoked.

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

<>

> java -version

java version "1.6.0_65"

> javac -version

javac 1.6.0_65

> which javac

/usr/bin/javac

I then re-downloaded a fresh copy the installer and ran it.

> java -version

java version "1.8.0_05"

> javac -version

javac 1.7.0_21

Update

I tried removing all JDK's, XCode and all developer tools, and re-installed fresh.

Same results.

However, I'm still at a loss -- where do I go from here? How do I get javac 1.8 to get installed?

解决方案

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

With a privileged user execute:

cd /System/Library/Frameworks/JavaVM.framework/Versions/

rm CurrentJDK

ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/ CurrentJDK

Solution found in Mankeh Blog

Also check this answer on Super User for dynamically switching JDK versions.

Update: I guess I've found the culprit!

Try this:

rm -rf ~/Library/Java/Extensions

sudo rm -rf /Library/Java/Extensions

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值