如何更改mac上的Java默认版本?


当前回答

在~/中添加以下内容。Bash_profile,并设置相应的默认Java版本。

export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)
export JAVA_11_HOME=$(/usr/libexec/java_home -v11)

alias java8='export JAVA_HOME=$JAVA_8_HOME'
alias java11='export JAVA_HOME=$JAVA_11_HOME'

# default to Java 8
java8

我使用macOS,并使用brew安装java。

编辑: 如果你不使用bash,请更新正确的shell文件,例如,如果你使用zsh,那么它将是~/.zshrc

其他回答

安装JDK,而不仅仅是JRE

/usr/libexec/java_home -v 1.8

给了

/Library/Java/JavaVirtualMachines/jdk1.8.0_111.jdk/Contents/Home

next

touch .bash_profile

open -a TextEdit.app .bash_profile

TextEdit将显示您可以填写的空白页。

添加到文档: 出口JAVA_HOME = /图书馆/ Java / Home / JavaVirtualMachines / jdk1.8.0_111.jdk /内容

在终端:

export JAVA_HOME="$(/usr/libexec/java_home -v 1.8)"

试试下面的命令:

javac - version

应该输出:

javac 1.8.0_111

基于@markhellewell的答案,我创建了几个别名函数,将为您做这件事。只需将这些添加到您的shell启动文件

#list available jdks
alias jdks="/usr/libexec/java_home -V"
# jdk version switching - e.g. `jdk 6` will switch to version 1.6
function jdk() { 
  echo "Switching java version"; 
  export JAVA_HOME=`/usr/libexec/java_home -v 1.$1`; 
  java -version; 
}

https://gist.github.com/Noyabronok/0a90e1f3c52d1aaa941013d3caa8d0e4

一个基于/usr/libexec/java_home的小鱼函数

function jhome
    set JAVA_HOME (/usr/libexec/java_home $argv)
    echo "JAVA_HOME:" $JAVA_HOME
    echo "java -version:"
    java -version
end

如果你不使用fish,你可以在bash中做类似的事情:

#!/bin/bash

jhome () {
  export JAVA_HOME=`/usr/libexec/java_home $@`
  echo "JAVA_HOME:" $JAVA_HOME
  echo "java -version:"
  java -version
}

然后在java do之间切换:

$> jhome           #switches to latest java
$> jhome -v 1.7    #switches to java 1.7
$> jhome -v 1.6    #switches to java 1.6

裁判:https://gist.github.com/kenglxn/1843d552dff4d4233271

检查Java版本:Java -version

版本切换:https://devqa.io/brew-install-java/

开放的~ / . bash_profile

export JAVA_8_HOME=$(/usr/libexec/java_home -v1.8)

export JAVA_11_HOME=$(/usr/libexec/java_home -v11)

别名java8=“出口JAVA_HOME=$ java_8_homs” 别名java11=“出口JAVA_HOME=$ java_11_homs”

源~ / . bash_profile

当我们切换到java11或java8时,java -version命令没有显示正确的版本。

在这种情况下,使用mvn -version查看用于构建解决方案的正确java版本

我使用我写的fish函数

function javav
  set min_version 8
  set max_version 99
  set java_home_cmd '/usr/libexec/java_home 2>/dev/null --failfast --version'

  if ! test (eval $java_home_cmd $argv)
    echo "Version not found"
    return 1
  end

  for current_version in (seq $min_version $max_version)
    set path_to_remove (eval $java_home_cmd $current_version)
    if ! test -z $path_to_remove
      echo 'Removing' $path_to_remove 'from PATH'
      set PATH (string match --invert $path_to_remove/bin $PATH)
    end
  end

  echo 'Setting up env for Java' $argv
  set -x JAVA_HOME (eval $java_home_cmd $argv)
  set PATH $JAVA_HOME/bin $PATH
end

它基本上自动化了这个答案中的步骤,类似于这个,但也负责设置PATH。

只要把它放在.config/fish/functions/中,然后像这样使用它:

javav 11 # Sets to Java 11
javav 16 # Sets to Java 16