如何在MacOS上安装额外的java ?我安装了jdk8,运行正常。但是现在出于开发目的,我需要安装jdk7。当试图通过DMG文件安装旧版本时,我得到一个警告,已经安装了新的java版本,安装程序退出。
/usr/libexec/java_home -verbose
Matching Java Virtual Machines (1):
1.8.0_20, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home
/Library/Java/JavaVirtualMachines/jdk1.8.0_20.jdk/Contents/Home
除了这个,如何安装jdk7 ?
macOS Sierra 420
这个指南是从各种来源(上面的回复和其他帖子)拼凑起来的,非常完美。
0. 如果还没有安装,请安装自制软件。
参见https://brew.sh/
1. 安装jenv
brew install jenv
2. 将jenv添加到bash配置文件中
if which jenv > /dev/null; then eval "$(jenv init -)"; fi
3.将jenv添加到您的路径
export PATH="$HOME/.jenv/shims:$PATH"
4. 利用“组装/ cask-versions”
供参考:“Tap”扩展了brew的可用回购列表,它可以安装,高于和超出brew的默认可用回购列表。
brew tap homebrew/cask-versions
5. 安装最新版本的java
brew install java --cask
6. 安装java 6(或7或8)
brew install java6 --cask
#brew install java7 --cask
#brew install java8 --cask
? 也许关闭并重新启动终端,让它看到任何新的ENV变量已经设置。
7. 检查安装
所有Java版本都安装在这里:/Library/Java/JavaVirtualMachines让我们看看。
ls -la /Library/Java/JavaVirtualMachines
8. 每次将每个路径添加到jenv。
我们需要添加“/Contents/Home”到版本文件夹。
警告:使用您机器上的实际路径…这些只是例子
jenv add /Library/Java/JavaVirtualMachines/1.6.0___EXAMPLE___/Contents/Home
jenv add /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk___EXAMPLE___/Contents/Home
9. 检查jenv是否注册成功
jenv versions
10. 设置java版本使用(全局)
其中XX与上面版本列表中的一项匹配。
jenv global XX
检查java版本
java -version
检查jenv版本
还应该用星号表示正在使用的当前版本。
jenv versions
DONE
未来快速参考
更改java版本
... 请参阅可用的java版本列表
jenv versions
…然后,其中XX与上面列表中的一项匹配
jenv global XX
在这个网站上可以找到
让我们从安装jEnv开始
Run this in the terminal
brew install https://raw.github.com/gcuisinier/jenv/homebrew/jenv.rb
Add jEnv to the bash profile
if which jenv > /dev/null; then eval "$(jenv init -)"; fi
When you first install jEnv will not have any JDK associated with it.
For example, I just installed JDK 8 but jEnv does not know about it. To check Java versions on jEnv
At the moment it only found Java version(jre) on the system. The * shows the version currently selected. Unlike rvm and rbenv, jEnv cannot install JDK for you. You need to install JDK manually from Oracle website.
Install JDK 6 from Apple website. This will install Java in /System/Library/Java/JavaVirtualMachines/. The reason we are installing Java 6 from Apple website is that SUN did not come up with JDK 6 for MAC, so Apple created/modified its own deployment version.
Similarly install JDK7 and JDK8.
Add JDKs to jEnv.
JDK 6:
JDK 7:
JDK 8:
Check the java versions installed using jenv
So now we have 3 versions of Java on our system. To set a default version use the command
jenv local <jenv version>
Ex – I wanted Jdk 1.6 to start IntelliJ
jenv local oracle64-1.6.0.65
check the java version
java -version
就是这样。我们现在有多个版本的java,我们可以很容易地在它们之间切换。jEnv还有其他一些特性,比如Gradle、Ant、Maven等的包装器,以及全局或本地设置JVM选项的能力。有关更多信息,请查看文档。
通过Homebrew安装Java的新命令:
安装adoptopenjdk/openjdk/adoptopenjdk8
安装adoptopenjdk/openjdk/adoptopenjdk11
有关最新的命令,请参阅homebrew-openjdk repo。
安装Java
您可以通过Homebrew、Jabba、SDKMAN或手动安装Java。有关所有命令的详细信息,请参阅此回答。
切换Java版本*
你可以用jenv Jabba, SDKMAN或手动切换Java版本。在这里查看所有切换命令的详细信息。
最好的解决方案
Jabba is designed to work on multiple platforms, so it's a good option if you want a solution that'll also work on Windows
Using Homebrew to download Java versions and jenv to switch versions provides a nice workflow. jenv makes it easy to work with Java versions stored in any directory on your machine, so it's a good alternative if you're interested in storing Java in non-default directories.
Using SDKMAN to download Javas and switch versions is another great alternative
Manually switching should be avoided because it's an unnecessary headache.
命令用于手动切换Java版本
下面是手动切换Java版本的Bash / ZSH函数(通过OpenJDK):
jdk() {
version=$1
export JAVA_HOME=$(/usr/libexec/java_home -v"$version");
java -version
}
有很多很棒的工具可以切换Java版本,所以我强烈建议不要手动切换。
卸载jdk8,安装jdk7,然后重新安装jdk8。
我在它们之间切换的方法(在.profile中):
export JAVA_7_HOME=$(/usr/libexec/java_home -v1.7)
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_9_HOME=$(/usr/libexec/java_home -v9)
alias java7='export JAVA_HOME=$JAVA_7_HOME'
alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java9='export JAVA_HOME=$JAVA_9_HOME'
#default java8
export JAVA_HOME=$JAVA_8_HOME
然后,只需在终端中输入java7或java8即可切换版本。
(编辑:更新为Java 9添加了dylan的改进)