Mac OS X and multiple Java versions
如何在MaOS上安装一个附加的Java?我安装了JDK8,效果很好。但现在我需要一个JDK7安装来进行开发。当试图通过DMG文件安装旧版本时,我得到一个警告,即已经安装了一个新版本的Java,安装程序退出了。
1 2 3 4 5 | /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?
谢谢达基
在Mac上管理多个Java版本的最干净的方法是使用EDCOX1 2。
在
- EDCOX1(4)安装Java的版本
- EDCOX1(5)用于管理已安装的Java版本
如http://hanxue-it.blogspot.ch/2014/05/installing-java-8-managing-multiple.html所示,以下是要遵循的步骤。
自制木桶版本
使用以下方法将
1 | brew tap homebrew/cask-versions |
然后您可以查看所有可用的版本:
1 | brew search java |
然后您可以安装您喜欢的版本:
1 2 | brew cask install java7 brew cask install java6 |
并像往常一样将其添加到Jenv管理中。
1 | jenv add <javaVersionPathHere> |
我认为这是最干净最简单的方法。
另一个重要的注意事项,如Mac OS X.7.67 Java路径当前JDK混淆所述:
For different types of JDKs or installations, you will have different
pathsYou can check the paths of the versions installed using
/usr/libexec/java_home -V , see How do I check if the Java JDK is installed on Mac?On Mac OS X Mavericks, I found as following:
1) Built-in JRE default:
/Library/Internet\
Plug-Ins/JavaAppletPlugin.plugin/Contents/Home2) JDKs downloaded from Apple:
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home/ 3) JDKs downloaded from Oracle:
/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//BURW.SH
- https://github.com/homebrew/homebrew/tree/master/share/doc/homebrew自述
- http://sourabhbajaj.com/mac-setup/homebrew/readme.html
- "BREW TAP"解释了https://github.com/homebrew/homebrew/blob/master/share/doc/homebrew/brew-tap.md
- "BREW版本"说明了自制安装特定版本的公式?以及https://github.com/homebrew/homebrew-versions
- https://github.com/caskroom/homebrew-cask
- "CASK版本",类似于"BREW版本",请参见https://github.com/caskroom/homebrew-versions和https://github.com/caskroom/homebrew-cask/issues/9447
- 网址:http://www.jenv.be
- https://github.com/gcuisiner/jenv
卸载JDK8,安装JDK7,然后重新安装JDK8。
我在它们之间切换的方法(in.profile):
1 2 3 4 5 6 7 8 9 10 | 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 |
然后,只需在终端中键入
(编辑:更新以添加Java 9的DelAN改进)
对于Macos Sierra 420
这本指南是从各种渠道(上面的回复以及其他帖子)拼凑而成的,效果很好。
0。如果尚未安装,请安装自制。请参阅https://brew.sh/
1。安装珍妮1 | brew install jenv |
2。将Jenv添加到bash配置文件中
1 | if which jenv > /dev/null; then eval"$(jenv init -)"; fi |
三。将Jenv添加到您的路径中
1 | export PATH="$HOME/.jenv/shims:$PATH" |
4。轻触"Caskroom/versions"
仅供参考:"tap"扩展了BREW可安装的可用回购列表,超出了BREW的默认可用回购列表。
1 | brew tap caskroom/versions |
5。安装最新版本的Java
1 | brew cask install java |
6。安装Java 6(或7或8,无论你需要什么)
1 2 3 | brew cask install java6 #brew cask install java7 #brew cask install java8 |
?也许关闭并重新启动终端,这样它可以看到任何新的env vars,并得到设置。
7。检查安装所有Java版本都安装在这里:EDCOX1,0,让我们看一看。
1 | ls -la /Library/Java/JavaVirtualMachines |
8。将每条路径一次添加到jenv。
我们需要将"/contents/home"添加到版本文件夹。警告:使用计算机上的实际路径…这些只是例子
1 2 | 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注册是否正常
1 | jenv versions |
10。设置Java版本使用(可全球化)
其中xx与上面版本列表中的一个项目匹配。
1 | jenv global XX |
检查Java版本
1 | java -version |
检查Jenv版本
还应指示当前版本与星号一起使用。
1 | jenv versions |
完成快速未来参考
更改Java版本
…查看可用Java版本的列表
1 | jenv versions |
…然后,其中xx与上面列表中的项目匹配
1 | jenv global XX |
SDKMAN!是在Mac OS上使用Java、Gradle、Groovy、Kotlin和其他JVM工具的多个版本的伟大工具。安装和使用文件清楚地位于主现场。
(我没有隶属关系,只是一个快乐的用户)。
作为示例用法,如果在终端窗口中键入以下内容,则会有一个可用的JAVA SDK版本列表(为简洁而编辑):
1 2 3 4 5 | $ sdk list java Available Java Versions + 9ea170 > + 8u131 7u141-zulu |
这里,
1 | $ sdk install java 7u141-zulu |
要在此终端窗口中使用版本:
1 | $ sdk use java 9ea170 |
如本网站所示那么让我们从安装Jenv开始
在终端运行这个
1 | brew install https://raw.github.com/gcuisinier/jenv/homebrew/jenv.rb |
将Jenv添加到bash配置文件中
1 | if which jenv > /dev/null; then eval"$(jenv init -)"; fi |
当您第一次安装时,Jenv将没有任何与之相关联的JDK。
例如,我刚安装了JDK8,但Jenv不知道。在JENV上检查Java版本
目前,它只在系统上找到了Java版本(JRE)。
从苹果网站安装JDK 6。这将在EDCOX1 1中安装Java。我们从苹果网站安装Java 6的原因是Sun没有为苹果公司提供JDK 6,所以苹果创建/修改了自己的部署版本。
同样,安装JDK7和JDK8。
将JDK添加到Jenv。
JDK 6:
JDK 7:
JDK 8:
使用JEnV检查安装的Java版本
所以现在我们的系统上有3个版本的Java。要设置默认版本,请使用命令
1 | jenv local <jenv version> |
我想让JDK 1.6启动Intellij
1 | jenv local oracle64-1.6.0.65 |
检查Java版本
Java版本
就是这样。现在我们有了Java的多个版本,我们可以轻松地在它们之间切换。Jenv还具有一些其他特性,例如Gradle、Ant、Maven等的包装器,以及在全局或本地设置JVM选项的能力。有关详细信息,请参阅文档。
我发现这个Java版本管理器最近被称为JABBA,它的使用非常类似于其他语言的版本管理器,如RVM(Ruby)、NVM(节点)、PyEnv(Python)等。它也是跨平台的,因此它绝对可以在MAC上使用。
安装后,它将在~/.jabBA中创建一个DIR,以放置所有安装的Java版本。它支持Oracle JDK(默认)/Server JRE、Zulu OpenJDK(自0.3.0)、IBM SDK、Java技术版(自0.6)和自定义URL的安装。
基本用法列在其GitHub上。要开始的快速摘要:
1 2 3 4 5 6 7 8 9 10 11 | 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 |
我使用的是Mac OS X 10.9.5。这就是当我需要一个版本来运行应用程序A并为应用程序B使用另一个版本时,如何在我的计算机上管理多个JDK/JRE。
我在获得一些联机帮助后创建了以下脚本。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #!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,在脚本后面附加上面的代码片段并保存它。一旦您的out类型
麦卡塞拉上的珍妮弗:
如果安装后不工作,请将此错误修复为将Java可执行文件添加到路径
1 | export PATH="$HOME/.jenv/shims:$PATH" |
即使
- 确保~/.jenv在那里
which java 可以打印/图书馆。- 詹妮全球1.8
- 詹夫壳牌1.8
最终,
/Users/xxxx/.jenv/shims/java
这里有一个更干燥的bash版本(基于vegard的答案)
将1.7和1.8替换为您感兴趣的任何版本您将得到一个名为"javax"的别名,其中"x"是Java版本(下面的代码段中的7/8),这将允许您轻松地切换版本。
1 2 3 4 5 6 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 |