Mac OS X和多个Java版本

Mac OS X和多个Java版本,java,macos,multiple-versions,homebrew-cask,jenv,Java,Macos,Multiple Versions,Homebrew Cask,Jenv,如何在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

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

谢谢

Dakky

卸载jdk8,安装jdk7,然后重新安装jdk8

我在它们之间切换的方法(在.profile中):

然后,您只需在终端中键入
java7
java8
,即可切换版本


(编辑:更新以添加针对Java 9的Dylans改进)

卸载jdk8,安装jdk7,然后重新安装jdk8

我在它们之间切换的方法(在.profile中):

然后,您只需在终端中键入
java7
java8
,即可切换版本


(编辑:更新以添加Dylans对Java 9的改进)

在Mac上管理多个Java版本最干净的方法是使用

自制
中,使用:

  • 自制桶
    安装java版本
  • jenv
    管理已安装的java版本

如图所示,以下是要遵循的步骤

  • 安装自制软件
  • 安装自制jenv
  • 安装自制桶
  • 使用cask安装特定的java版本(请参阅下面的“自制cask版本”一段)
  • 为jenv添加此版本以管理它
  • 检查jenv是否正确管理了该版本
  • 对所需的每个java版本重复步骤4到6

  • 自制木桶版本 使用以下方法将抽头添加到自制中:

    brew tap homebrew/cask-versions
    
    然后,您可以查看所有可用的版本:

    brew search java
    
    然后,您可以安装您喜欢的版本:

    brew cask install java7
    brew cask install java6
    
    并像往常一样将其添加到jenv的管理中

    jenv add <javaVersionPathHere>
    
    jenv添加
    
    我认为这是最干净、最简单的方法


    另一个需要注意的重要事项,如中所述:

    对于不同类型的JDK或安装,您将有不同的 路径

    您可以使用
    /usr/libexec/java_home-V
    检查安装版本的路径,请参阅

    在Mac OS X Mavericks上,我发现如下:

    1) 内置JRE默认值:
    /Library/Internet\
    插件/JavaAppletPlugin.plugin/Contents/Home

    2) 从Apple下载的jdk:
    /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/

    3) 从Oracle下载的jdk:
    /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home


    资源
    • “brew水龙头”说明
    • 对“brew版本”进行了解释和说明
    • 与“brew版本”类似的“cask版本”,请参见和

    在Mac上管理多个java版本最干净的方法是使用

    自制
    中,使用:

    • 自制桶
      安装java版本
    • jenv
      管理已安装的java版本

    如图所示,以下是要遵循的步骤

  • 安装自制软件
  • 安装自制jenv
  • 安装自制桶
  • 使用cask安装特定的java版本(请参阅下面的“自制cask版本”一段)
  • 为jenv添加此版本以管理它
  • 检查jenv是否正确管理了该版本
  • 对所需的每个java版本重复步骤4到6

  • 自制木桶版本 使用以下方法将抽头添加到自制中:

    brew tap homebrew/cask-versions
    
    然后,您可以查看所有可用的版本:

    brew search java
    
    然后,您可以安装您喜欢的版本:

    brew cask install java7
    brew cask install java6
    
    并像往常一样将其添加到jenv的管理中

    jenv add <javaVersionPathHere>
    
    jenv添加
    
    我认为这是最干净、最简单的方法


    另一个需要注意的重要事项,如中所述:

    对于不同类型的JDK或安装,您将有不同的 路径

    您可以使用
    /usr/libexec/java_home-V
    检查安装版本的路径,请参阅

    在Mac OS X Mavericks上,我发现如下:

    1) 内置JRE默认值:
    /Library/Internet\
    插件/JavaAppletPlugin.plugin/Contents/Home

    2) 从Apple下载的jdk:
    /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/

    3) 从Oracle下载的jdk:
    /Library/Java/JavaVirtualMachines/jdk1.8.0_11.jdk/Contents/Home


    资源
    • “brew水龙头”说明
    • 对“brew版本”进行了解释和说明
    • 与“brew版本”类似的“cask版本”,请参见和

    我正在使用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
    

    我把上面的脚本放在.profile文件中。只需打开终端,键入vi.profile,用上面的代码片段附加脚本并保存它。一旦您输入了source.profile
    ,这将运行您的配置文件脚本,而无需重新启动终端。现在键入
    java-version
    它应该显示1.7作为当前版本。如果要将其更改为1.8,请注释行
    setjdk jdk1.7.0_15.jdk
    ,并取消注释行
    setjdk jdk1.8.0_60.jdk
    。保存脚本并使用source命令再次运行它。当我必须编译两个需要不同java版本的Maven项目时,我使用这种机制来管理JDK/JRE的多个版本。

    我使用的是Mac OS X 10.9.5。这就是当我需要一个版本来运行应用程序A并使用另一个版本来运行应用程序A时,我如何在我的机器上管理多个JDK/JRE
    jenv local oracle64-1.6.0.65
    
    export PATH="$HOME/.jenv/shims:$PATH"
    
    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
    
    $ sdk list java
    Available Java Versions
       + 9ea170                                                                        
     > + 8u131                                                                         
         7u141-zulu                     
    
    $ sdk install java 7u141-zulu
    
    $ sdk use java 9ea170
    
    brew install jenv
    
    if which jenv > /dev/null; then eval "$(jenv init -)"; fi
    
    export PATH="$HOME/.jenv/shims:$PATH"
    
    brew tap caskroom/versions
    
    brew cask install java
    
    brew cask install java6
    #brew cask install java7
    #brew cask install java8
    
    ls -la /Library/Java/JavaVirtualMachines
    
    jenv add /Library/Java/JavaVirtualMachines/1.6.0___EXAMPLE___/Contents/Home
    jenv add /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk___EXAMPLE___/Contents/Home
    
    jenv versions
    
    jenv global XX
    
    java -version
    
    jenv versions
    
    jenv versions
    
    jenv global XX
    
    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
    
    jdk() {
        version=$1
        export JAVA_HOME=$(/usr/libexec/java_home -v"$version");
        java -version
     }
    
    export JAVA_HOME=$(/usr/libexec/java_home -v11); # Your default version
    
     jdk 9
     jdk 11
     jdk 13
    
    cd /usr/local/Cellar/maven/3.5.4/bin/
    nano mvn
    --Update JAVA_HOME -> "${JAVA_HOME:-$(/usr/libexec/java_home)}"
    mvn -version
    
    jdk() {
            version=$1
            export JAVA_HOME=$(/usr/libexec/java_home -v"$version");
            java -version
     }
    
    /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
    
    java -version
    
    open ~/.bash_profile
    
    export JAVA_HOME=`/usr/libexec/java_home -v 1.8`