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


当前回答

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

保存并关闭文件。

其他回答

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

保存并关闭文件。

我使用的是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.

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

在这个网站上可以找到 让我们从安装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选项的能力。有关更多信息,请查看文档。

这是一个很棒的教程 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管理版本