Mac OS X和多个Java版本

时间:2014-10-08 08:41:52

标签: java macos install multiple-versions

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

17 个答案:

答案 0 :(得分:392)

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

Homebrew内,请使用:

  • homebrew-cask安装java的版本
  • jenv来管理已安装的java版本

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

  1. 安装homebrew
  2. 安装homebrew jenv
  3. 安装homebrew-cask
  4. 使用cask安装特定的java版本(参见" homebrew-cask版本"以下段落)
  5. 为jenv添加此版本以进行管理
  6. 检查版本是否由jenv
  7. 正确管理
  8. 为您需要的每个版本的Java重复步骤4到6

  9. homebrew-cask版本

    使用以下内容将homebrew/cask-versions点按添加到自制程序:

    brew tap homebrew/cask-versions
    

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

    brew search java
    

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

    brew cask install java7
    brew cask install java6
    

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

    jenv add <javaVersionPathHere>
    

    我认为这是最干净的&amp;最简单的方法。


    另一个需要注意的重要事项,如Mac OS X 10.6.7 Java Path Current JDK confusing中所述:

      

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

         

    您可以使用/usr/libexec/java_home -V检查安装的版本的路径,请参阅How do I check if the Java JDK is installed on Mac?

         

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

         

    1)内置JRE默认值:/Library/Internet\ Plug-Ins/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


    资源

答案 1 :(得分:242)

卸载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

然后,您只需在终端中输入java7java8即可切换版本。

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

答案 2 :(得分:89)

对于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。点按&#34; caskroom / versions&#34;

仅供参考:&#34;点击&#34;扩展brew可以安装的可用回购列表,超出brew的默认可用回购列表。

brew tap caskroom/versions

5。安装最新版本的java

brew cask install java

6。安装java 6(或者你需要的7或8)

brew cask install java6
#brew cask install java7
#brew cask install java8

?也许关闭并重新启动终端,以便它看到任何新的ENV变量已经安装。

7。检查安装

此处安装了所有Java版本:/Library/Java/JavaVirtualMachines让我们一起来看看。

ls -la /Library/Java/JavaVirtualMachines

8。一次一个地添加每个jenv路径。

我们需要添加&#34; / Contents / Home&#34;到版本文件夹。 警告:使用计算机上的实际路径......这些只是 示例 &#39>

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

完成

快速未来参考

更改java版本

...查看可用的java版本列表

jenv versions

...然后,XX匹配上面列表中的项目

jenv global XX

答案 3 :(得分:34)

SDKMAN!是在Mac OS上使用多个版本的Java,Gradle,Groovy,Kotlin和其他JVM工具的绝佳工具。安装和使用文档显然位于主站点上。

(我没有联盟,只是一个快乐的用户)。

作为示例用法,如果我在终端窗口中键入以下内容,则会列出可用的Java SDK版本(为简洁起见而编辑):

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

此处+表示已安装该版本。 >表示当前正在使用的版本。要安装版本:

$ sdk install java 7u141-zulu

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

$ sdk use java 9ea170

答案 4 :(得分:7)

在此website上找到 所以我们首先安装jEnv

  1. 在终端中运行

    brew install https://raw.github.com/gcuisinier/jenv/homebrew/jenv.rb
    
  2. 将jEnv添加到bash配置文件

    if which jenv > /dev/null; then eval "$(jenv init -)"; fi
    
  3. 首次安装时,jEnv不会有任何与之关联的JDK。

    例如,我刚刚安装了JDK 8,但jEnv不知道它。检查jEnv上的Java版本

    目前它只在系统上找到Java版本(jre)。 *显示当前选择的版本。与rvm和rbenv不同,jEnv无法为您安装JDK。您需要从Oracle网站手动安装JDK。

  4. 从Apple网站安装JDK 6。这将在/System/Library/Java/JavaVirtualMachines/中安装Java。我们从Apple网站安装Java 6的原因是SUN没有为MAC提供JDK 6,因此Apple创建/修改了自己的部署版本。

  5. 同样安装JDK7和JDK8。

  6. 将JDK添加到jEnv。

    JDK 6:

    JDK 7: http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518ab9bc47d4.png

    JDK 8: http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abb2c1217.png

  7. 检查使用jenv安装的java版本

    http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abceb0deb.png

  8. 现在我们的系统上有3个版本的Java。要设置默认版本,请使用命令

    jenv local <jenv version>
    

    前 - 我希望Jdk 1.6启动IntelliJ

    jenv local oracle64-1.6.0.65
    
  9. 检查java版本

    java -version http://javahabi@javahabit.com/wp-content/uploads/2015/03/img_5518abe376dd0.png

  10. 就是这样。我们现在有多个版本的java,我们可以轻松地在它们之间切换。 jEnv还有一些其他功能,例如Gradle,Ant,Maven等的包装器,以及在全局或本地设置JVM选项的功能。查看文档以获取更多信息。

答案 5 :(得分:5)

我最近发现这个Java版本管理器名为Jabba,其用法与其他语言的版本管理器非常相似,如rvm(ruby),nvm(node),pyenv(python)等。此外,它还有#39 ; s跨平台,所以它绝对可以在Mac上使用。

安装完成后,它会在〜/ .jabba中创建一个dir来放置你安装的所有Java版本。它支持安装Oracle JDK(默认)/ Server JRE,Zulu OpenJDK(自0.3.0以来),IBM SDK,Java Technology Edition(自0.6.0开始)以及自定义URL。&#34;。

基本用法列在他们的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

答案 6 :(得分:4)

我使用的是Mac OS X 10.9.5。当我需要一个版本来运行应用程序A并将另一个版本用于应用程序B时,这就是我在我的机器上管理多个JDK / JRE的方式。

我在网上获得一些帮助后创建了以下脚本。

"teams": []

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

答案 7 :(得分:3)

Mac上的Jenv:

如果在安装后无法正常工作,请执行此错误修复以将java可执行文件添加到路径

export PATH="$HOME/.jenv/shims:$PATH"

尽管eval "$(jenv init -)"可以完成这项工作。原因是/ bin文件夹不再在它的主页中描述,但是shim文件夹用作/ bin。

  • 确保〜/ .jenv在那里
  • which java可能会打印/ Library /...
  • jenv global 1.8
  • jenv shell 1.8

最终,which java会为您提供:

  

/Users/xxxx/.jenv/shims/java

答案 8 :(得分:3)

与@Vegard(轻量级)的精神相同:

  • 使用Homebrew安装所需的JDK
  • 将此jdk bash函数和默认值放入.profile

    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,您可以

     jdk 9
     jdk 11
     jdk 13
    

基于https://github.com/AdoptOpenJDK/homebrew-openjdk

答案 9 :(得分:1)

首先,您需要确保安装了多个 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 版本,请从此处下载并安装相应的版本(JDK 8 表示为 1.8)。安装相应的 JDK 后,重复此步骤。

  1. 记下您要切换到的 JDK 版本。例如,“11.0”和“1.8”是上例中可用的JDK版本。

  2. 切换到想要的版本。例如,如果您希望切换到 JDK 8,请输入以下行:

    导出 JAVA_HOME=/usr/libexec/java_home -v 1.8

对于 11.0,将“1.8”切换为“11.0” 4. 通过输入终端检查您的 JDK 版本:

java -version

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

open ~/.bash_profile

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

切换到 Java 版本 8

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

保存并关闭文件。

答案 10 :(得分:1)

我最近回答了,我真的建议您使用SDKMAN而不是Homebrew。

使用SDKMAN,您可以在Mac中轻松安装不同版本的JAVA,并从一个版本切换到另一个版本。

Java in your mac

您还可以将SDKMAN用于ANT,GRADLE,KOTLIN,MAVEN,SCALA等...

要在Mac中安装版本,可以运行命令sdk install java 15.0.0.j9-adpt cmd

答案 11 :(得分:0)

这是一个很棒的教程 https://medium.com/@chamikakasun/how-to-manage-multiple-java-version-in-macos-e5421345f6d0 使用 brew 安装的 jEnv

或者你可以查看 homebrew-openjdk https://github.com/AdoptOpenJDK/homebrew-openjdk 使用 brew Tap 管理版本

答案 12 :(得分:0)

使用jenv在MAC中管理多个java版本

  1. 使用以下命令安装自制软件

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

  1. 安装 jenv 并激活 jenv

brew 安装 jenv

echo 'eval "$(jenv init -)"' >> ~/.bash_profile

  1. 点击木桶版本

brew tap homebrew/cask-versions

  1. 搜索可安装的java版本

brew 搜索 java

  1. 例如安装 java6 使用以下命令

brew install cask java6

  1. 在 jenv 中添加多个版本的 java

jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_231.jdk/Contents/Home

jenv add /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

注意:-如果你得到类似“”ln: /Users//.jenv/versions/oracle64-1.8.0.231: No such file or directory之类的错误,然后运行以下:-

mkdir -p /Users//.jenv/versions/oracle64-1.8.0.231

  1. 添加jdk后重新hash jenv

jenv rehash

  1. 列出已知版本的 java 到 jenv

jenv 版本

  1. 设置默认版本

jenv global oracle64-1.8.0.231

  1. 更改项目的 Java 版本

jenv 本地 oracle64-1.6.0.65

  1. 将JAVA_HOME设置为与jenv相同的版本

jenv exec bash

回声 $JAVA_HOME

答案 13 :(得分:0)

通过Homebrew安装Java的新命令:

  • brew cask install adoptopenjdk/openjdk/adoptopenjdk8
  • brew cask install adoptopenjdk/openjdk/adoptopenjdk11

有关最新命令,请参见homebrew-openjdk存储库。

安装Java

您可以通过Homebrew,Jabba,SDKMAN或手动安装Java。有关所有命令的详细信息,请参见this answer

切换Java版本 *

您可以使用jenv Jabba,SDKMAN或手动切换Java版本。有关所有切换命令here的详细信息,请参见。

最佳解决方案

  • Jabba设计为可在多个平台上运行,因此,如果您想要一种也可以在Windows上运行的解决方案,这是一个不错的选择
  • 使用Homebrew下载Java版本和使用jenv切换版本可以提供很好的工作流程。 jenv使您可以轻松使用存储在计算机上任何目录中的Java版本,因此,如果您有兴趣将Java存储在非默认目录中,它是一个不错的选择。
  • 使用SDKMAN下载Java和切换版本是另一个不错的选择
  • 应避免手动切换,因为这是不必要的头痛。

用于手动切换Java版本的功能

这里是Bash / ZSH函数,用于手动切换Java版本(通过OpenJDK):

jdk() {
        version=$1
        export JAVA_HOME=$(/usr/libexec/java_home -v"$version");
        java -version
 }

有很多用于切换Java版本的工具,因此强烈建议您不要手动执行。

答案 14 :(得分:0)

我按照下面的链接-https://medium.com/@euedofia/fix-default-java-version-on-maven-on-mac-os-x-156cf5930078中的步骤进行了操作,

cd /usr/local/Cellar/maven/3.5.4/bin/
nano mvn
--Update JAVA_HOME -> "${JAVA_HOME:-$(/usr/libexec/java_home)}"
mvn -version

答案 15 :(得分:0)

要安装OpenJDK的最新版本,请使用它。 OpenJDK 14的示例:

brew info adoptopenjdk
brew tap adoptopenjdk/openjdk
brew cask install adoptopenjdk14

有关当前信息,请参见https://github.com/AdoptOpenJDK/homebrew-openjdk

答案 16 :(得分:0)

这是bash的更干版本(基于Vegard的答案)

将1.7和1.8替换为您感兴趣的任何版本 并且你会得到一个名为&#39; javaX&#39;的别名;在哪里&#39; X&#39;是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