Mac OS X和多个Java版本

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

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

Homebrew ,使用:

  • homebrew-cask安装java的版本
  • jenvpipe理java的安装版本

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

  1. 安装自制软件
  2. 安装自制软件jenv
  3. 安装自制酒桶
  4. 使用cask安装特定的java版本(请参阅下面的“homebrew-cask versions”段落)
  5. 为jenv添加这个版本来pipe理它
  6. 检查版本是否正确地由jenvpipe理
  7. 为每个需要的java版本重复步骤4到6

自制酒桶版本

添加“caskroom /版本”水龙头自制软件使用:

 brew tap caskroom/versions 

那么你可以看看所有可用的版本:

 brew cask search java 

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

 brew cask install java7 brew cask install java6 

并像往常一样添加他们由jenvpipe理。

 jenv add <javaVersionPathHere> 

我认为这是最简单和最简单的方法。


另外需要注意的是,正如Mac OS X 10.6.7中提到的Java Path当前JDK所迷惑的 :

对于不同types的JDK或安装,您将拥有不同的path

您可以检查使用/usr/libexec/java_home -V安装的版本的path,请参阅如何检查Java JDK是否安装在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


资源

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

然后你可以简单地在terminal中键入java7java8来切换版本。

(编辑:更新为Java 9添加Dylans改进)

SDKMAN! 是在Mac OS上使用多个版本的Java,Gradle,Groovy,Kotlin和其他JVM工具的好工具。 安装和使用doc清楚地在主要站点上。

(我没有从属关系,只是一个快乐的用户)。

作为一个例子,如果我在terminal窗口中键入下面的内容,有一个可用的Java SDK版本列表(为简洁起见):

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

这里+表示版本已安装。 >表示当前正在使用哪个版本。 要安装一个版本:

 $ sdk install java 7u141-zulu 

要在此terminal窗口中使用版本:

 $ sdk use java 9ea170 

在这个网站上find所以让我们开始安装jEnv

  1. 在terminal运行这个

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

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

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

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

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

  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> 

    Ex – 我想让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

而已。 我们现在有多个版本的Java,我们可以轻松地在它们之间切换。 jEnv还有一些其他特性,比如Gradle,Ant,Maven等的包装器,以及在全局或本地设置JVM选项的能力。 查看文档以获取更多信息。

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

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

 #!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文件中。 只要打开terminal,键入vi .profile,将脚本添加到上面的代码片段中并保存。 一旦你的输出source .profile ,这将运行您的configuration文件脚本,而不必重新启动terminal。 现在键入java -version它应该显示1.7作为您当前的版本。 如果打算将其更改为1.8,则注释行setjdk jdk1.7.0_15.jdk并取消注释行setjdk jdk1.8.0_60.jdk 。 保存脚本并使用source命令重新运行它。 当我必须编译2个需要不同java版本的Maven项目时,我使用这个机制来pipe理多个版本的JDK / JRE。

我发现这个Java版本pipe理器最近叫做Jabba ,它的用法和rvm(ruby),nvm(node),pyenv(python)等其他语言的版本pipe理器非常相似。它也是跨平台的,所以它可以用在苹果电脑。

安装完成后,它将在〜/ .jabba中创build一个目录来放置您安装的所有Java版本。 它支持安装Oracle JDK(缺省)/服务器JRE,祖鲁OpenJDK(自0.3.0以来),IBM SDK,Java Technology Edition(自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 

Jenv on Mac Sierra:

如果安装后不工作,请执行此错误修复将java可执行文件添加到path

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

即使eval "$(jenv init -)"可以完成这项工作。 原因是/ bin文件夹不在主页中描述的那样,而shim文件夹被用作/ bin。

  • 确保〜/ .jenv在那里
  • which java可能打印/图书馆/ …
  • 全球jenv 1.8
  • jenv shell 1.8

最终, which java给你:

/Users/xxxx/.jenv/shims/java