Java 7和Java 8可以在OSX上共存

Dan*_*Dan 25 java macos java-8

我已经安装了Java 8用于开发目的,但现在我想再次使用Java 7.

我该怎么做呢?

这似乎非常困难.

提前谢谢了.(我尝试使用guigarage,但这不起作用)

Sam*_*ane 38

从终端:export JAVA_HOME=`/usr/libexec/java_home -v 1.x`,其中x是Java版本.

我个人有一个shell函数,为我做这个:

use-java () {
    export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`
}
Run Code Online (Sandbox Code Playgroud)

我只需要调用use-java 7或者use-java 8为了更改我当前的shell的Java版本.


flu*_*lup 27

使用jEnv.

如果您的系统运行自制程序,则可以使用它进行安装

brew install jenv
Run Code Online (Sandbox Code Playgroud)

(您可能需要先运行brew update以获取最新的食谱)

使用将其添加到您的bash配置文件中

echo 'eval "$(jenv init -)"' >> ~/.bash_profile
Run Code Online (Sandbox Code Playgroud)

启动一个新shell以使对配置文件的此更改生效.

然后你可以像这样添加jdk:

jenv add /Library/Java/JavaVirtualMachines/jdk1.8.0_05.jdk/Contents/Home
Run Code Online (Sandbox Code Playgroud)

列出可用的版本

jenv versions
Run Code Online (Sandbox Code Playgroud)

并在使用环境之间切换

jenv global oracle64-1.8.0.25
Run Code Online (Sandbox Code Playgroud)

还有更多自定义选项,例如每个目录切换或临时在单个shell中,请参阅http://www.jenv.be.

jEnv的工作原理是为java可执行文件创建填充脚本并将它们放在路径的前面.像ant和maven这样的第三方java工具依赖于JAVA_HOME.要确保正确设置JAVA_HOME,请运行

jenv enable-plugin export
Run Code Online (Sandbox Code Playgroud)

还有用于maven和groovy等工具的jenv插件.


Jas*_*ske 5

下面是如何从在OSX小牛(命令行切换Java版本优异的答案通过Neeme Praks):

编辑~/.bash_profile并添加以下内容:

function setjdk() {  
  if [ $# -ne 0 ]; then  
   removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'  
   if [ -n "${JAVA_HOME+x}" ]; then  
    removeFromPath $JAVA_HOME  
   fi  
   export JAVA_HOME=`/usr/libexec/java_home -v $@`  
   export PATH=$JAVA_HOME/bin:$PATH  
  fi  
  echo JAVA_HOME set to $JAVA_HOME  
  java -version  
 }  
 function removeFromPath() {  
  export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")  
 }
Run Code Online (Sandbox Code Playgroud)

(将以上功能添加到您的.bash_profile)

用法:

$ setjdk 1.7
Run Code Online (Sandbox Code Playgroud)