Mar*_*itt 37 java macos java-8
我在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)
Run Code Online (Sandbox Code Playgroud)
我已经完成并删除了Java 1.7(和所有其他JDK版本),然后重新运行安装程序:
> ls /Library/Java/JavaVirtualMachines
jdk1.8.0_05.jdk
Run Code Online (Sandbox Code Playgroud)
仍然没有用,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
Run Code Online (Sandbox Code Playgroud)
在该路径中,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)
Run Code Online (Sandbox Code Playgroud)
继原来的帖子之后,我已经用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
Run Code Online (Sandbox Code Playgroud)
这让我想到这是一个随机的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
Run Code Online (Sandbox Code Playgroud)
> java -version
java version "1.8.0_05"
> javac -version
javac 1.7.0_21
Run Code Online (Sandbox Code Playgroud)
我尝试删除所有JDK,XCode和所有开发人员工具,然后重新安装.结果相同.
但是,我仍然不知所措 - 我从哪里开始?如何安装javac 1.8?
Ant*_*oly 39
如果/usr/libexec/java_home -v 1.8.0_05 --exec javac -version返回正确的版本,那么您的问题是:
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK
Run Code Online (Sandbox Code Playgroud)
使用特权用户执行:
cd /System/Library/Frameworks/JavaVM.framework/Versions/
rm CurrentJDK
ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/ CurrentJDK
Run Code Online (Sandbox Code Playgroud)
Mankeh博客中找到的解决方案
另请在超级用户上查看此答案,以动态切换JDK版本.
更新:我想我找到了罪魁祸首!
试试这个:
rm -rf ~/Library/Java/Extensions
sudo rm -rf /Library/Java/Extensions
Run Code Online (Sandbox Code Playgroud)
找到的解决方案: OSX 10.9.2上的Java 1.7运行为1.5?
Kay*_*ayG 10
对于Windows用户:
您可能需要更改PATH变量.尝试将"%JAVA_HOME%/ bin"设置为PATH中的第一个条目.
所以现在它看起来像这样:
PATH C:\Program Files\anyprogram;C:\Program Files\...;%JAVA_HOME%\bin
Run Code Online (Sandbox Code Playgroud)
你改变它是这样的:
PATH %JAVA_HOME%\bin;C:\Program Files\anyprogram;C:\Program Files\...
Run Code Online (Sandbox Code Playgroud)
原因:任何其他程序首先启动其他Java版本.
| 归档时间: |
|
| 查看次数: |
40537 次 |
| 最近记录: |