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


当前回答

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

其他回答

我最近发现了一个叫做Jabba的Java版本管理器,它的用法与其他语言的版本管理器非常相似,比如rvm(ruby)、nvm(node)、pyenv(python)等。而且它是跨平台的,所以肯定可以在Mac上使用。

安装完成后,它将在~/目录下创建一个目录。jabba来放置你安装的所有Java版本。它“支持安装Oracle JDK(默认)/ Server JRE, Zulu OpenJDK(自0.3.0起),IBM SDK, Java技术版(自0.6.0起)和自定义url。”

他们的Github上列出了基本用法。简单总结一下:

curl -sL https://github.com/shyiko/jabba/raw/master/install.sh | bash && . ~/.jabba/jabba.sh

# install Oracle JDK
jabba install 1.8 # "jabba use 1.8" will be called automatically  
jabba install 1.7 # "jabba use 1.7" will be called automatically 

# list all installed JDK's
jabba ls

# switch to a different version of JDK
jabba use 1.8

首先,您需要确保安装了多个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`

保存并关闭文件。

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

我知道这个问题已经有很多答案,但我只想分享我的解决方案,只使用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的例子)


享受

卸载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的改进)