如何在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 ?


当前回答

这是一个很棒的教程 https://medium.com/@chamikakasun/how-to-manage-multiple-java-version-in-macos-e5421345f6d0 通过使用jEnv安装由brew

或者您可以查看homebrew-openjdk https://github.com/AdoptOpenJDK/homebrew-openjdk使用brew Tap管理版本

其他回答

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

为了安装最新版本的OpenJDK,我使用了这个。OpenJDK 14的示例:

brew info adoptopenjdk
brew tap adoptopenjdk/openjdk
brew cask install adoptopenjdk14

查看https://github.com/AdoptOpenJDK/homebrew-openjdk获取当前信息。

Jenv谈Mac Sierra:

如果安装后无法工作,请执行此错误修复以将Java可执行文件添加到路径

export PATH="$HOME/.jenv/shims:$PATH"

尽管eval "$(jenv init -)"可以做这个工作。原因是/bin文件夹已经不存在了,就像在它的主页上描述的那样,但是shim文件夹被用作/bin。

Make sure ~/。Jenv在那里 哪个java可以打印/库/… Jenv global 1.8 Jenv外壳1.8

最终,java给了你:

\用户- xxxx - jenv shims / java。

我使用的是Mac OS X 10.9.5。这就是当我需要一个版本运行应用程序A,而应用程序B使用另一个版本时,我如何在我的机器上管理多个JDK/JRE。

我在网上得到一些帮助后创建了以下脚本。

#!bin/sh
function setjdk() {
  if [ $# -ne 0 ]; then
   removeFromPath '/Library/Java/JavaVirtualMachines/'
   if [ -n "${JAVA_HOME+x}" ]; then
    removeFromPath $JAVA_HOME
   fi
   export JAVA_HOME=/Library/Java/JavaVirtualMachines/$1/Contents/Home
   export PATH=$JAVA_HOME/bin:$PATH
  fi
 }
 function removeFromPath() {
  export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")
 }
#setjdk jdk1.8.0_60.jdk
setjdk jdk1.7.0_15.jdk

I put the above script in .profile file. Just open terminal, type vi .profile, append the script with the above snippet and save it. Once your out type source .profile, this will run your profile script without you having to restart the terminal. Now type java -version it should show 1.7 as your current version. If you intend to change it to 1.8 then comment the line setjdk jdk1.7.0_15.jdk and uncomment the line setjdk jdk1.8.0_60.jdk. Save the script and run it again with source command. I use this mechanism to manage multiple versions of JDK/JRE when I have to compile 2 different Maven projects which need different java versions.

通过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版本,所以我强烈建议不要手动切换。