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的版本 -
jenv
pipe理java的安装版本
正如http://hanxue-it.blogspot.ch/2014/05/installing-java-8-managing-multiple.html所见,这些是要遵循的步骤。;
- 安装自制软件
- 安装自制软件jenv
- 安装自制酒桶
- 使用cask安装特定的java版本(请参阅下面的“homebrew-cask versions”段落)
- 为jenv添加这个版本来pipe理它
- 检查版本是否正确地由jenvpipe理
- 为每个需要的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
资源
- 从Mac删除Java 8 JDK
- http://hanxue-it.blogspot.ch/2014/05/installing-java-8-managing-multiple.html
- http://sourabhbajaj.com/mac-setup/index.html
- http://brew.sh
- https://github.com/Homebrew/homebrew/tree/master/share/doc/homebrew#readme
- http://sourabhbajaj.com/mac-setup/Homebrew/README.html
- “brew tap”解释https://github.com/Homebrew/homebrew/blob/master/share/doc/homebrew/brew-tap.md
- “酿造版本”解释家酿装置的具体版本的公式? 还有https://github.com/Homebrew/homebrew-versions
- https://github.com/caskroom/homebrew-cask
- “木桶版本”,类似于“酿造版本”,见https://github.com/caskroom/homebrew-versions和https://github.com/caskroom/homebrew-cask/issues/9447
- http://www.jenv.be
- https://github.com/gcuisinier/jenv
卸载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中键入java7
或java8
来切换版本。
(编辑:更新为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
-
在terminal运行这个
brew install https://raw.github.com/gcuisinier/jenv/homebrew/jenv.rb
-
将jEnv添加到bashconfiguration文件中
if which jenv > /dev/null; then eval "$(jenv init -)"; fi
-
当你第一次安装jEnv时不会有任何与之相关的JDK。
例如,我刚刚安装了JDK 8,但jEnv不知道它。 检查jEnv上的Java版本
目前它只能在系统上findJava版本(jre)。
*
显示当前select的版本。 与rvm和rbenv不同,jEnv无法为您安装JDK。 您需要从Oracle网站手动安装JDK。 -
从Apple网站安装JDK 6。 这将在
/System/Library/Java/JavaVirtualMachines/
安装Java。 我们从苹果网站安装Java 6的原因是SUN没有为MAC提供JDK 6,所以苹果创build/修改了自己的部署版本。 -
同样安装JDK7和JDK8。
-
将JDK添加到jEnv。
JDK 6:
JDK 7:
JDK 8:
-
检查使用jenv安装的Java版本
-
所以现在我们的系统上有3个Java版本。 要设置默认版本,请使用该命令
jenv local <jenv version>
Ex – 我想让Jdk 1.6启动IntelliJ
jenv local oracle64-1.6.0.65
-
检查Java版本
java -version
而已。 我们现在有多个版本的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