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


当前回答

以下是我如何在我的Linux (Ubuntu / Mint伙伴)上做到这一点,我猜Mac也可以这样做。


安装和配置

步骤:

[Basic - part] Download jdk (the .tgz file) by hand. Uncompress & rename properly, at a proper location. e.g /mnt/star/program/java/jdk-1.8 Make a soft link, which will be changed to switch java version later. e.g ln -s /mnt/star/program/java/jdk-1.8 /mnt/star/program/java/java Thus /mnt/star/program/java/java is the soft link. Set JAVA_HOME in a start script. Could use file like /etc/profile.d/eric.sh, or just use ~/.bashrc. e.g JAVA_HOME=/mnt/star/program/java/java Then open a new bash shell. java -version should print the java version. [More version - part] Download & install more Java version, as need, similar as above steps. e.g /mnt/star/program/java/jdk-11 [Switch - part] In ~/.bashrc, define variable for various Java version. e.g _E_JAVA_HOME_11='/mnt/star/program/java/jdk-11' _E_JAVA_HOME_8='/mnt/star/program/java/jdk-8' # dir of default version, _E_JAVA_HOME_D=$_E_JAVA_HOME_8 In ~/.bashrc, define command to switch Java version. e.g ## switch java version, alias jv11="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_11 $JAVA_HOME" alias jv8="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_8 $JAVA_HOME" # default java version, alias jvd="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_D $JAVA_HOME" alias jv="java -version" In terminal, source ~/.bashrc to make the changes take effect. Then could switch using the defined commands.


命令-从上面的config

命令:

jv11 切换到Java 11 jv8 切换到Java 8 jvd 切换到默认的Java版本,该版本由上面定义的_E_JAVA_HOME_D表示。 合资企业 显示java版本。

示例输出:

eric@eric-pc:~$ jv
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

eric@eric-pc:~$ jv11
eric@eric-pc:~$ jv
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

eric@eric-pc:~$ jvd
eric@eric-pc:~$ jv
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

eric@eric-pc:~$ 

机制

它通过改变软链接来切换,如JAVA_HOME。


Tips

在我的机器上手动安装jdk时,我保留次要版本,然后与主要版本做一个软链接,但没有次要版本。 如 //这是实际的目录, jdk1.8.0_191 //这是jdk1.8.0_191的软链接 jdk-8 //这是一个到jdk-8或jdk-11的软链接 java 我在~/中定义了命令别名。Bashrc,但是在单独的文件中定义变量。 我正在使用~/。Eric_var定义变量,~/。bashrc将源它(例如源$HOME/.eric_var)。

其他回答

这有点棘手,但请尝试遵循在OS X 10.9 (Mavericks)上安装Java中描述的步骤。基本上,你得把你的别名更新为java。

循序渐进:

在安装JDK 1.7之后,您将需要执行sudo ln -snf命令来更改到当前java的链接。要做到这一点,打开Terminal并发出命令:

sudo ln -nsf /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents \
/System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK

注意,目录jdk1.7.0_51. conf。jdk可能会根据您安装的SDK版本而变化。

现在,您需要将JAVA_HOME设置为指向jdk_1.7.0_xx的位置。安装JDK。再次打开终端,输入:

export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home"

您可以在您的.bashrc文件中添加上面的export JAVA_HOME行,以使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`

如果你用的是fish,而你用的是mac,你希望能够在JDK之间切换,那么下面对我来说适用于mac。

@kenglxn的答案对我不起作用,我发现它没有设置-g,这是全局的!

放在~/.config/fish/config.fish下面

alias j8="jhome  -v 1.8.0_162"
alias j9="jhome  -v 9.0.1"

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

funcsave jhome

要了解您已安装的版本/次要版本,您可以执行以下操作:

/usr/libexec/java_home -V                                                                              579ms  Wed 14 Feb 11:44:01 2018
Matching Java Virtual Machines (3):
    9.0.1, x86_64:  "Java SE 9.0.1" /Library/Java/JavaVirtualMachines/jdk-9.0.1.jdk/Contents/Home
    1.8.0_162, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_162.jdk/Contents/Home
    1.8.0_121, x86_64:  "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home

以下是我如何在我的Linux (Ubuntu / Mint伙伴)上做到这一点,我猜Mac也可以这样做。


安装和配置

步骤:

[Basic - part] Download jdk (the .tgz file) by hand. Uncompress & rename properly, at a proper location. e.g /mnt/star/program/java/jdk-1.8 Make a soft link, which will be changed to switch java version later. e.g ln -s /mnt/star/program/java/jdk-1.8 /mnt/star/program/java/java Thus /mnt/star/program/java/java is the soft link. Set JAVA_HOME in a start script. Could use file like /etc/profile.d/eric.sh, or just use ~/.bashrc. e.g JAVA_HOME=/mnt/star/program/java/java Then open a new bash shell. java -version should print the java version. [More version - part] Download & install more Java version, as need, similar as above steps. e.g /mnt/star/program/java/jdk-11 [Switch - part] In ~/.bashrc, define variable for various Java version. e.g _E_JAVA_HOME_11='/mnt/star/program/java/jdk-11' _E_JAVA_HOME_8='/mnt/star/program/java/jdk-8' # dir of default version, _E_JAVA_HOME_D=$_E_JAVA_HOME_8 In ~/.bashrc, define command to switch Java version. e.g ## switch java version, alias jv11="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_11 $JAVA_HOME" alias jv8="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_8 $JAVA_HOME" # default java version, alias jvd="rm $JAVA_HOME; ln -s $_E_JAVA_HOME_D $JAVA_HOME" alias jv="java -version" In terminal, source ~/.bashrc to make the changes take effect. Then could switch using the defined commands.


命令-从上面的config

命令:

jv11 切换到Java 11 jv8 切换到Java 8 jvd 切换到默认的Java版本,该版本由上面定义的_E_JAVA_HOME_D表示。 合资企业 显示java版本。

示例输出:

eric@eric-pc:~$ jv
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

eric@eric-pc:~$ jv11
eric@eric-pc:~$ jv
java version "11.0.1" 2018-10-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.1+13-LTS)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.1+13-LTS, mixed mode)

eric@eric-pc:~$ jvd
eric@eric-pc:~$ jv
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

eric@eric-pc:~$ 

机制

它通过改变软链接来切换,如JAVA_HOME。


Tips

在我的机器上手动安装jdk时,我保留次要版本,然后与主要版本做一个软链接,但没有次要版本。 如 //这是实际的目录, jdk1.8.0_191 //这是jdk1.8.0_191的软链接 jdk-8 //这是一个到jdk-8或jdk-11的软链接 java 我在~/中定义了命令别名。Bashrc,但是在单独的文件中定义变量。 我正在使用~/。Eric_var定义变量,~/。bashrc将源它(例如源$HOME/.eric_var)。

首先找出存储环境变量的位置

emacs bash_profile zshrc中

设置环境变量步骤:- .单击“确定”

从JAVA下载jdk 双击安装它 现在在文件中设置环境变量 a. emacs。你可以使用这个链接或看到下面的截图

b.对于ZSH配置文件设置-

1. export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home

2. source ~/.zshrc - Restart zshrc to reflect the changes.

3. echo $JAVA_HOME - make sure path is set up properly 
   ----> /Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home

4. java -version 

   -->  java version "1.8.0_112"  Java(TM) SE Runtime Environment (build 1.8.0_112-b16)Java HotSpot(TM) 64-Bit Server VM (build 25.112-b16, mixed mode)

所有设置现在您可以轻松升级或降级JAVA版本..