我在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的建议对_1781480进行了一些挖掘 .
> 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?
6 回答
如果
/usr/libexec/java_home -v 1.8.0_05 --exec javac -version
返回正确的版本,那么您的问题是:使用特权用户执行:
Solution found in Mankeh Blog
同时检查超级用户this answer以动态切换JDK版本 .
Update: 我想我找到了罪魁祸首!
试试这个:
Solution found in: Java 1.7 on OSX 10.9.2 running as 1.5?
对于Windows用户:
您可能需要更改PATH变量 . 尝试将"%JAVA_HOME%/bin"设置为PATH中的 first 条目 .
所以现在它看起来像这样:
你改变它是这样的:
原因:任何其他程序首先启动其他Java版本 .
这(很可能)是 jre8 的安装过程中的一个错误 .
导航到我的jre8文件夹时,我得到了完全相同的行为,这是Windows(在我的情况下)默认显示的文件夹:
java版本:1.8.0,运行时环境1.8.0-b132,热点64位JVM 25.0-b70
javac版本:1.7.0_25
导航到 jdk8 目录时,它显示以下内容:
java版本:1.8.0,运行时环境1.8.0-b132,热点64位JVM 25.0-b70
javac版本:1.8.0
我刚才注意到,虽然jre永远不会发送javac,所以这是操作系统参考设置中的一个问题然后我想 .
要解决此问题,您需要手动修复操作系统中的 javac 引用 .
也许你可以删除类路径中的标准.jar文件 . 当我删除
/Library/Java/Extensions
中的jar时,问题将得到解决 . 更多信息:Java compilation error: Mac只是在这里添加我自己的经验,我从Oracle安装了jdk-8u131-macosx-x64 . 一切都很完美 . 没有JAVA_HOME环境变量存在或需要 .
/ System / Library显示了这个:
虽然/ Library / Java有这个:
Extensions中没有任何内容,而JavaVirtualMachines只有jdk1.8.0_131.jdk文件夹 .
这表明JDK的默认安装正常,无需额外配置 .
首先,你需要下载然后安装jdk8(http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
其次,做一些检查如下:你的系统是否已经使用了非连接shell for java 8?在你的终端尝试这个(是的,撇号很重要):
如果它显示“java version”1.8.0_131“”,那么你可以转到下一步 .
my screenshot
第三,编辑bash_profile:
并输入以下内容:
然后保存并退出
完成上述步骤后,检查java版本