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


当前回答

来自Apple官方java_home(1)手册页:

**USAGE**

   /usr/libexec/java_home  helps  users  set a $JAVA_HOME in their login rc files, or provides a way for
   command-line Java tools to use the most appropriate JVM which can satisfy a minimum version or archi-
   tecture  requirement.  The --exec argument can invoke tools in the selected $JAVA_HOME/bin directory,
   which is useful for starting Java command-line tools from launchd plists without hardcoding the  full
   path to the Java command-line tool.

   Usage for bash-style shells:
          $ export JAVA_HOME=`/usr/libexec/java_home`

   Usage for csh-style shells:
          % setenv JAVA_HOME `/usr/libexec/java_home`

其他回答

考虑以下方法,仅为终端的每个特定选项卡(即:iTerm)更改JDK。

在/Library/Java/JavaVirtualMachines路径中有以下两个jdk

openjdk8u275-b01 openjdk-11.0.9.1 + 1

在.bash_profile文件中:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk-11.0.9.1+1/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH

如果打开第一个选项卡为A的“Iterm -”,执行以下命令:

javac -version
javac 11.0.9.1

java -version
openjdk version "11.0.9.1" 2020-11-04
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.9.1+1)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.9.1+1, mixed mode)

输出是正确的和预期的

但是如果你打开第二个Tab B,你需要覆盖默认的JDK,然后在终端中写以下内容:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/openjdk8u275-b01/Contents/Home/
export PATH=$JAVA_HOME/bin:$PATH

Then

javac -version
javac 1.8.0_275

java -version
openjdk version "1.8.0_275"
OpenJDK Runtime Environment (AdoptOpenJDK)(build 1.8.0_275-b01)
OpenJDK 64-Bit Server VM (AdoptOpenJDK)(build 25.275-b01, mixed mode)

它工作得很好。当然,如果选项卡B被关闭,或者你打开一个新的选项卡C,所有工作都根据.bash_profile设置(因此是默认设置)

在~/中添加以下内容。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

检查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版本

安装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