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


当前回答

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。

其他回答

到2023年,我在苹果芯片上无法使用brew install -cask zulu8。Brew install openjdk@8也没有。对我来说唯一有效的解决方案是brew install—cask adoptopenjdk8,然后当然是vim ~/。ZSHRC和内部:

export JAVAC_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home/
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)
export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
alias javac8='export JAVA_HOME=$JAVAC_HOME'
alias java11='export JAVA_HOME=$JAVA_11_HOME'
alias java8='export JAVA_HOME=$JAVA_8_HOME'

从使用javac8的终端切换到新安装的(不同的)版本。注意:您可以使用与我不同的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的改进)

下面是一个更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

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


享受

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