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


当前回答

我知道这个问题已经有很多答案,但我只想分享我的解决方案,只使用Temurin和bash。

AdoptOpenJdk已弃用,这就是我使用Temurin的原因。


1. 使用镜像或包管理器下载Temurin

$ brew install—桶铁尿

对于其他版本(如Java 8):

$ brew tap自制/桶装版本

$ brew install—桶temurin8


2. 将bash脚本添加到bash配置文件中

打开~/。ZSHRC或~/。Bash_profile(取决于您正在使用它)

并添加以下代码:

set-jdk() {
    jdkversion=$1
    export JAVA_HOME=/Library/Java/JavaVirtualMachines/temurin-"$jdkversion".jdk/Contents/Home;
    export PATH=$PATH:$JAVA_HOME/bin;
    java -version
}

3.重新启动终端并更改Java版本

$ set-jdk N N是你想要的Java版本,并且已经安装好了

如。 $ set-jdk 8修改为Java 8 / 1.8


一些注意事项:

它只会在使用set-jdk命令的终端会话上保留Java版本 它不会将Java版本设置为全局 当您想要将JAVA_HOME添加到另一个脚本/应用程序中时,可以设置/Library/Java/JavaVirtualMachines/temurin-<version>。jdk/Contents/Home(更改为所需的Java版本。就像这个JD-GUI的例子)


享受

其他回答

在Mac上管理多个java版本最简单的方法是使用Homebrew。

在Homebrew中,使用:

Homebrew-cask来安装Java版本 Jenv来管理已安装的Java版本


如http://hanxue-it.blogspot.ch/2014/05/installing-java-8-managing-multiple.html所示,以下是需要遵循的步骤。

安装自酿酒 安装自制jenv 安装homebrew-cask 使用cask安装特定的Java版本(请参阅下面的“家酿-cask版本”段落) 添加这个版本给jenv来管理它 检查版本是否由jenv正确管理 对于您需要的每个Java版本,重复步骤4到6


homebrew-cask版本

添加自制/桶版本的点击到自制,使用:

brew tap homebrew/cask-versions

然后你可以查看所有可用的版本:

brew search java

然后你可以安装你喜欢的版本:

brew install --cask java7
brew install --cask java6

并像往常一样将它们添加到jenv管理。

jenv add <javaVersionPathHere>

我认为这是最干净和最简单的方法。


还有一件重要的事情需要注意,正如在Mac OS X 10.6.7中提到的Java Path Current JDK令人困惑:

For different types of JDKs or installations, you will have different paths You can check the paths of the versions installed using /usr/libexec/java_home -V, see How do I check if the Java JDK is installed on Mac? On Mac OS X Mavericks, I found as following: Built-in JRE default: /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin/Contents/Home JDKs downloaded from Apple: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/ JDKs downloaded from Oracle: /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home


资源

Removing Java 8 JDK from Mac http://hanxue-it.blogspot.ch/2014/05/installing-java-8-managing-multiple.html http://sourabhbajaj.com/mac-setup/index.html http://brew.sh https://github.com/Homebrew/homebrew/tree/master/share/doc/homebrew#readme http://sourabhbajaj.com/mac-setup/Homebrew/README.html "brew tap” explained https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/brew-tap.md “brew versions” explained Homebrew install specific version of formula? and also https://github.com/Homebrew/homebrew-versions https://github.com/caskroom/homebrew-cask “cask versions”, similar to “brew versions”, see https://github.com/caskroom/homebrew-versions and also https://github.com/caskroom/homebrew-cask/issues/9447 http://www.jenv.be https://github.com/gcuisinier/jenv

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

SDKMAN !是一个伟大的工具,使用多个版本的Java, Gradle, Groovy, Kotlin和其他JVM工具在Mac OS上。安装和使用文档很容易在主站找到。

(我没有隶属关系,只是一个快乐的用户)。

作为一个使用示例,如果我在终端窗口中输入以下内容,会有一个可用的Java SDK版本列表(为简洁起见,经过编辑):

$ sdk list java
Available Java Versions
   + 9ea170                                                                        
 > + 8u131                                                                         
     7u141-zulu                     

这里的+表示已安装的版本。>表示当前正在使用的版本。安装新版本:

$ sdk install java 7u141-zulu

要在此终端窗口中使用一个版本:

$ sdk use java 9ea170

首先,您需要确保安装了多个JAVA版本。 打开一个新的终端窗口并输入:

/usr/libexec/java_home -V

你的输出应该是这样的:

Matching Java Virtual Machines (2):
11.0.1, x86_64: "Java SE 11.0.1" /Library/Java/JavaVirtualMachines/jdk-11.0.1.jdk/Contents/Home
1.8.0_201, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_201.jdk/Contents/Home

注意,有两个jdk可用。如果您没有注意到需要切换到的Java版本,请从https://www.oracle.com/java/technologies/downloads/下载并安装相应的版本 (JDK 8表示为1.8)。 安装了适当的JDK之后,重复此步骤。

注意要切换到的JDK版本。例如,“11.0”和“1.8”是上面示例中可用的JDK版本。 切换到所需的版本。例如,如果您希望切换到JDK 8,则输入如下一行: export JAVA_HOME=/usr/libexec/ JAVA_HOME

对于11.0,将“1.8”转换为“11.0” 4. 输入Terminal检查JDK版本:

java -version

如果正确地执行了所有步骤,那么JDK版本应该与您在最后一步中指定的版本相关联。 5. (可选)要使其成为JDK的默认版本,在Terminal中输入以下内容:

open ~/.bash_profile

然后,将步骤3中的终端输入添加到这个文件中:

切换到Java版本8

export JAVA_HOME=`/usr/libexec/java_home -v 1.8`

保存并关闭文件。

下面是一个更DRY的bash版本(基于Vegard的回答)

将1.7和1.8替换为您感兴趣的任何版本 你会得到一个叫'javaX'的别名;其中'X'是java版本(在下面的代码片段中是7 / 8),可以让您轻松切换版本

for version in 1.7 1.8; do
    v="${version: -1}"
    h=JAVA_"$v"_HOME

    export "$h"=$(/usr/libexec/java_home -v $version)

    alias "java$v"="export JAVA_HOME=\$$h"
done